簡體   English   中英

3D場景上的2D覆蓋不起作用

[英]2D overlay over 3D scene not working

我正在嘗試在3D場景上創建2D疊加! 我已經嘗試了在GameDev和StackOverflow上可以找到的所有解決方案,但是它們似乎沒有用!

我當前的代碼:

static void ready3D()
{
    glViewport(0, 0, Display.getWidth(),Display.getHeight());
    glMatrixMode(GL_PROJECTION);

    glLoadIdentity();
    GLU.gluPerspective(45, (float) Display.getWidth()/Display.getHeight(), 0.1f, 5000.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    glDepthFunc(GL_LEQUAL);
    glEnable(GL_DEPTH_TEST);
}

static void ready2D()
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    GLU.gluOrtho2D(0.0f, Display.getWidth(), Display.getHeight(), 0.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.375f, 0.375f, 0.0f);

    glDisable(GL_DEPTH_TEST);
}

和,

glPushMatrix();
    //Overlay start - This is in my render method BTW.
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    ready2D();

    glBegin(GL_QUADS);
    glColor3f(1, 1, 1);
    glVertex2f(0, 0); // bottom-left
            glVertex2f(0, 1); // top-left
            glVertex2f(1, 1); // top-right
            glVertex2f(1, 0); // bottom-right
    glEnd();

    glPopMatrix();
    ready3D();

但是我嘗試繪制的2D盒子沒有畫! 顯然,我最終希望在覆蓋層上具有復雜的對象/圖標,但首先要考慮的是第一件事。

3D世界仍然完全可以繪制。

有人能告訴我我在做什么錯嗎?

如果我沒看錯的話,2D方形中的頂點順序對我來說有點可疑:左下,右上,右下,左上,這會導致某種交叉比四分之一。

嘗試這個:

glVertex2f(0, 0); // bottom-left
glVertex2f(0, 1); // top-left
glVertex2f(1, 1); // top-right
glVertex2f(1, 0); // bottom-right

請注意,我相信OpenGL默認會針對正面四邊形按順時針方向排序。

暫無
暫無

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

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