与我其他的问题有关,我认为更核心的问题是如何使用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
相同吗? - cmannett85SoOffscreenRenderer
缓冲区创建了QImage
,它使用GL_UNSIGNED_BYTE
,并且我可以设置它是否使用RGB
或RGBA
。我尝试了两个版本,但无论哪种方式都无法显示。 - Dreiven