Как сделать прозрачными на 2D фигурах OpenGL? - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь сделать прямоугольник, чтобы стать 50% прозрачности с помощью альфа. Но это не работает, и мои фигуры перестают появляться.

Любое решение, чтобы это исправить?

(Рисование прямоугольных функций в классе объектов)

void Object::drawRect(GLint x1, GLint y1,
              GLint x2, GLint y2,
              GLint x3, GLint y3,
              GLint x4, GLint y4){
    glPushMatrix();
    glBegin(GL_QUADS);
        glVertex2i(x1, y1);
        glVertex2i(x2, y2);
        glVertex2i(x3, y3);
        glVertex2i(x4, y4); 
    glEnd();
    glPopMatrix();
}

(рендеринг сцены)

void renderScene(void){ // Render function definition
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // RGBA
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, 1000, 0, 600); // Set canvas to 800x600 pixels.

    Object o = Object();

    glColor4ub(50,50,50,0.5);
    o.drawRect(150,30,60,30,60,40,150,40);

    glFlush(); // Clear all GL executions.
    glFinish(); // Block until all GL executions are completed.
    glDisable(GL_BLEND);
    glutSwapBuffers(); // Swap foreground with back buffer.
    glutPostRedisplay(); // Update the frame.
}

(Основная часть)

int main(){
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitWindowSize(1000, 600); // OpenGL window size.
    glutInitWindowPosition(150, 150); // Window position on the screen.
    glEnable( GL_DEPTH_TEST );
    glEnable (GL_BLEND);
    glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

    glutCreateWindow("Bossi"); // OpenGL window title.
    //glutFullScreen(); 
    glutDisplayFunc(renderScene); // Load render function.
    glutMouseFunc(mouseControl); // Enable mouse button function.   
    glutKeyboardFunc(keyboardControl1); // Enable ASCII keyboard control.
    glutSpecialFunc(keyboardControl2); // Enable special keys control.      
    glutMainLoop(); // Loop frame forever.

    system("PAUSE"); // Stop the frame.
    return 0; // Close program.
}
...