【问题标题】:Render 3D model in orthographic mode (on top of a GUI)以正交模式渲染 3D 模型(在 GUI 之上)
【发布时间】:2015-01-24 14:37:17
【问题描述】:

我正在尝试渲染一个带有一些模型的 GUI(如果您了解 Minecraft:我希望拥有与您在库存中看到玩家模型一样的模型)。我试图以正交模式渲染它,但没有出现任何内容。我尝试如下:

        glPushMatrix();

        glTranslatef(guiX, guiY, 0f);

        item.render();

        glPopMatrix();

该项目正在调用模型进行渲染。该模型存储在 VBO 中,渲染工作在非正交模式下。我不能在正交模式下渲染 3D 模型吗?

这是我进入正交模式的方式:

public static void enterOrtho() {
    glPushAttrib(GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT);
    glPushMatrix();
    glLoadIdentity();
    glMatrixMode(GL_PROJECTION); 
    glPushMatrix();

    // now enter orthographic projection
    glLoadIdentity();
    glOrtho(0, width, height, 0, -100, 100);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_LIGHTING);
}

public static void leaveOrtho() {
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
    glPopAttrib();
}

我确实尝试不禁用 GL_DEPTH_TEST,但也没有发生任何事情。

【问题讨论】:

  • 在绘制正射模型之前不要忘记清除Z-buffer ...
  • 这个问题的表述很糟糕。您正在绘制一些具有未知对象坐标和未知变换的未指定对象。不可能找到确切的问题,但很可能您只是在查看体积之外绘制。
  • 好吧,自从我开始使用新矩阵以来,我认为我不会在外面画画。 GUI 的坐标也是已知的,用于将 gui 放置在屏幕的中心,所以这是在这里完成的唯一转换。在 item.render 中仅绘制 VBO。我现在也尝试清除深度(或 z)缓冲区,但没有帮助。我添加了一些正交初始化代码。

标签: opengl 3d lwjgl


【解决方案1】:

好的,已经解决了……好像真的已经在屏幕外了:/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2014-04-03
    • 2016-07-30
    • 2017-10-13
    • 2017-08-05
    • 2013-03-25
    • 1970-01-01
    相关资源
    最近更新 更多