簡體   English   中英

OpenGL C ++-出現不必要的黑色三角形

[英]OpenGL c++ - unwanted black triangle appears

我開始使用OpenGL開發一個簡單的GUI應用程序。 繪制簡單的背景四邊形會帶來很多困難,而我只是無法發現自己​​做錯了什么或“壞了”。 這是代碼的一部分,負責繪制我的背景“四元組”:

static void Draw(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(0.5f, 0.5f, 0.5f);
    glBegin(GL_QUADS);
    glVertex2f(-1.0f, -1.0f);
    glVertex2f(1.0f, -1.0f);
    glVertex2f(-1.0f, 1.0f);
    glVertex2f(1.0f, 1.0f);
    glEnd();
    glutSwapBuffers();
}


int main(int argc, char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(600, 600);
    glutCreateWindow("Pro Sound");
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glutDisplayFunc(Draw);
    glutKeyboardFunc(keyPressed);
    glutKeyboardUpFunc(keyUp);

    glutMainLoop();
}

輸出看起來像一個灰色的四邊形,但是在其頂部(右側)上有一個黑色的三角形,其中心,右上角和右下角均具有頂點。 所以我的背景看起來像是被一個三角形牙齒像素的怪物咬了。 事實是,它最近工作正常,我什至可以添加一些紋理,將其放置好等。

看起來您以錯誤的順序繪制了四邊形頂點。 默認情況下,頂點應沿着多邊形的周長按逆時針方向排序。

因此,您擁有的是:

(-1.0f, -1.0f)  Bottom-Left
( 1.0f, -1.0f)  Bottom-Right
(-1.0f,  1.0f)  Top-Left
( 1.0f,  1.0f)  Top-Right

正在創建:

在此處輸入圖片說明

當你想要的時候:

(-1.0f, -1.0f)  Bottom-Left
( 1.0f, -1.0f)  Bottom-Right
( 1.0f,  1.0f)  Top-Right
(-1.0f,  1.0f)  Top-Left

這將創建:

在此處輸入圖片說明

另請參見面剔除原始-Quads

不要使用GL_QUADS並更改坐標,而應保留坐標並使用GL_TRIANGLE_STRIP

我相當確定GL_QUADS已棄用,無論您是否繪制四邊形,使用GL_TRIANGLE_STRIPGL_TRIANGLE_FAN似乎都是一個好習慣。

唯一應使用GL_QUADS時間是在即時模式下並草擬一個性能無關緊要的小程序時。 (這可能是其中一種情況;但是為了加強和保持良好的性能,我始終使用GL_TRIANGLE_STRIPGL_TRIANGLE_FAN 。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM