【问题标题】:OpenGL GlOrtho no primitives appearingOpenGL GlOrtho没有出现图元
【发布时间】:2015-07-04 21:29:09
【问题描述】:

我正在绘制纹理,然后使用 GL_QUADS 将此纹理渲染到屏幕上。在屏幕上绘制纹理没有问题,但是在绘制纹理时,唯一有效的操作是 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - 这会将整个纹理设置为我想要的颜色。然而,不可能绘制任何图元。

下面的代码应该绝对用黑色覆盖整个纹理,对吧?

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, texRenderer.framebufferID);                        // switch to the texture framebuffer

glClearColor(1.0f,0.5f,0.0f,1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glDisable(GL_DEPTH_TEST);
glDisable(GL_SCISSOR_TEST);
glDisable(GL_CULL_FACE);

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, texRenderer.pixelsWidth, 0, texRenderer.pixelsHeight, 1, -1);

// switch to modelview matrix before rendering objects
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glColor4f(0,0,0,1);
glBegin(GL_QUADS);
glVertex2f(-100, -100);
glVertex2f(-100, 100);
glVertex2f(100, 100);
glVertex2f(100, -100);
glEnd();

glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);

//RenderScene(sim, stateMachine, viewSettings, commandMgr, font, texRenderer.pixelsWidth, texRenderer.pixelsHeight, isMainView, drawText);

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);                        // switch back to normal framebuffer

它是橙色的。

pixelsWidth 和pixelsHeight 都等于64。我确保视口设置正确。 glGetError() 也返回 0。

我错过了什么?

【问题讨论】:

    标签: java netbeans opengl-1.x


    【解决方案1】:

    花了我 6 个小时,但问题解决了。我错了。未正确设置视口。在渲染到纹理之前,请务必添加以下行:

    glViewport(0, 0, textureWidth, textureHeight);
    

    还可以使用

    解开任何当前绑定的纹理
    glBindTexture(GL_TEXTURE_2D, 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 2015-04-18
      • 2018-06-08
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      • 2021-02-08
      相关资源
      最近更新 更多