與我的other question相關,我認爲更核心的問題是,如何渲染帶有OpenGL的QImage
?使用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'具有相同的格式嗎? – cmannett85
是的,因爲我從使用'GL_UNSIGNED_BYTE'的SoOffscreenRenderer'緩衝區創建'QImage',並且可以在其中使用'RGB'或'RGBA'設置。我嘗試了兩種版本,但它不會以任何方式顯示。 – Dreiven