2016-12-22 27 views
0

矩形を画面にレンダリングしようとしています。プログラムを実行すると、クリアカラーのみが表示され、矩形は表示されません。それは淘汰しまっOpenGL 2d矩形がレンダリングされない

glClearColor(0.0, 0.0, 0.0, 0.0); 
glViewport(0, 0, 1280, 720); 

glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(0, 1280, 720, 0, -10, 10); 

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glClear(GL_COLOR_BUFFER_BIT || GL_DEPTH_BUFFER_BIT); //Clear the screen and depth buffer 

int x = 100; 
int y = 100; 
while (!glfwWindowShouldClose(window)) { 
    glfwPollEvents(); 

    glBegin(GL_QUADS); 
     glVertex2f(x, y); 
     glVertex2f(x + 10, y); 
     glVertex2f(x + 10, y + 10); 
     glVertex2f(x, y + 10); 
    glEnd(); 

    gsm->update(); 
    gsm->render(); 

    glfwSwapBuffers(window); 
} 
+0

'GL_COLOR_BUFFER_BIT'&' GL_DEPTH_BUFFER_BIT'はビットフラグです、あなたはビット単位-ORそれら( '|')する必要があると答え一緒に、論理和(ではありません'||')。 – genpfault

答えて

1

は、ここでは、コードです。あなたは、上の0より大きいbottom = 720を供給することによって、投影とY軸を逆転させました。あなたのローカル座標では反時計回りですが、正規化座標では時計回りです。覚えておいてください、投影行列は、グローバル変換行列の一部です!今、それがデフォルト状態であれば、2つの巻線方向のうち enter image description here

です.GL_CCWは実際のものです。これは「正面」と見なされます。デフォルトでは、OpenGLはモードglCullFace(GL_BACK)で三角形を切り取り、内部的に四角形を三角形のペアとみなします。

頂点

glBegin(GL_QUADS); 
    glVertex2f(x, y); 
    glVertex2f(x, y + 10); 
    glVertex2f(x + 10, y + 10); 
    glVertex2f(x + 10, y); 
glEnd(); 

のいずれかの変更命令したり、座標系または無効に淘汰の左利きに一致するようにカリングモードを変更。

参照: 1. https://www.khronos.org/opengl/wiki/Viewing_and_Transformations 2. Is OpenGL coordinate system left-handed or right-handed?

関連する問題