Относительно моего other question, я думаю, что более центральным будет вопрос, как вы визуализируете QImage
с OpenGL?Render QImage с OpenGL
Я думаю, что код должен выглядеть примерно так, но я не уверен, что мне еще нужно, кроме, может быть, 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
Да, потому что я создаю 'QImage' из буфера' SoOffscreenRenderer', который использует 'GL_UNSIGNED_BYTE' и где я могу установить, использует ли он' RGB' или 'RGBA'. Я пробовал обе версии, но он не будет отображаться в любом случае. – Dreiven