簡體   English   中英

OpenGL繪制2D超過3D不起作用

[英]Opengl drawing 2D over 3D not working

我正在嘗試在OpenGL游戲中繪制HUD; 我決定使用一些紋理並將其應用於2D場景。 我正在使用Java和LWJGL。 這是代碼:

public void drawHUD1()
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 800, 0, 600, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_TEXTURE_2D);
    glDisable(GL_LIGHTING);
    glPushMatrix();
    glClear(GL_DEPTH_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, arrows[0]);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0f,0.0f);
    glVertex2f(60f,60f);
    glTexCoord2f(1.0f,0.0f);
    glVertex2f(90f,60f);
    glTexCoord2f(1.0f,1.0f);
    glVertex2f(90f,90f);
    glTexCoord2f(0.0f,1.0f);
    glVertex2f(60f,90f);
    glEnd();
    glDisable(GL_TEXTURE_2D);
    glPopMatrix();
    glViewport(0, 0, width, height); 
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    float aspect = (float) width / height;
    GLU.gluPerspective(45.0f, aspect, 0.1f, 1000); 
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHTING);
}

當我運行它時,將正確渲染3D零件,但是沒有我的紋理的跡象。 我記得要調用該方法,所以這不是一個可能的答案。 另外紋理已經正確加載,我已經檢查過了。 有誰能夠幫助我?

如果您在第一個函數調用中看到“不可能的”錯誤,則可能是先前在其他位置(即使在庫代碼中)的調用所設置的。

您可以嘗試通過循環調用glError()直到返回成功,來清除錯誤。 然后,您將獲得一份干凈的清單來檢查您調用的每個函數。 那只是一個hack,永遠不要在發布代碼時這樣做!

但是,您還必須嘗試簡化代碼。 只需調用glDrawLine()即可啟動。 如果可行,則繪制一個無紋理的三角形。 那將確認您的觀點和modleview是正確的。 只有這樣才能啟用紋理。

您可能會打亂電話。 例如,您要為GL_MODELVIEW推動什么矩陣?

暫無
暫無

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

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