Related to my other question, I think the more central question would be, how you render a QImage
with OpenGL?
I think the code has to look something like this, but I'm not sure what else I need, besides maybe 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);
Also, I thought quick and dirty you could use glDrawPixels()
(although you shouldn't), like
glDrawPixels(imgGL.width(), imgGL.height(), GL_RGBA,
GL_UNSIGNED_BYTE, imgGL.bits());
But either way I can't see the image, just a white square with the size of it. I'm missing something here.
imgGL
has the same format asGL_RGBA/GL_UNSIGNED_BYTE
? – SeditiousQImage
from theSoOffscreenRenderer
buffer that usesGL_UNSIGNED_BYTE
and where I can set if it usesRGB
orRGBA
. I tried both versions, but it won't display either way. – Reinold