【发布时间】:2013-12-13 07:05:19
【问题描述】:
与我的other question 相关,我认为更核心的问题是,如何使用 OpenGL 渲染QImage?
我认为代码必须看起来像这样,但我不确定我还需要什么,除了 convertToGLFormat(img)。
glEnable(GL_TEXTURE_2D);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glGenTextures(1, &offscreenBufferTexture);
glBindTexture(GL_TEXTURE_2D, offscreenBufferTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imgGL.width(),
imgGL.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE,
imgGL.bits());
glBegin(GL_QUADS);
glTexCoord2d(0,0); glVertex2d(0, 0);
glTexCoord2d(1,0); glVertex2d(windowSize.width(), 0);
glTexCoord2d(1,1); glVertex2d(windowSize.width(), windowSize.height());
glTexCoord2d(0,1); glVertex2d(0, windowSize.height());
glEnd();
glDisable(GL_TEXTURE_2D);
另外,我认为你可以使用glDrawPixels()(虽然你不应该),比如
glDrawPixels(imgGL.width(), imgGL.height(), GL_RGBA,
GL_UNSIGNED_BYTE, imgGL.bits());
但无论哪种方式,我都看不到图像,只是一个与它大小相同的白色方块。我在这里遗漏了一些东西。
【问题讨论】:
-
您确认
imgGL与GL_RGBA/GL_UNSIGNED_BYTE的格式相同吗? -
是的,因为我从使用
GL_UNSIGNED_BYTE的SoOffscreenRenderer缓冲区创建了QImage,如果它使用RGB或RGBA,我可以在哪里设置。我尝试了两个版本,但都不会显示。
标签: c++ qt opengl qimage glteximage2d