如何在OpenGL 3.X中将像素缓冲区复制/渲染到后台缓冲区

我正在尝试执行像旧的glDrawPixels:我有一个用文本创建的像素缓冲区,我想将它应用到后台缓冲区(所有场景已经渲染)。

unsigned char a[] = {255, 255, 255, 255, 0, 0, 255, 255, 255, 255, 0, 0};

// What I would
//glDrawPixels(2, 2, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid*)pixels);

// What I am trying
GLuint pbo = 0;
glGenBuffers(1, &pbo);
glBindBuffer( GL_PIXEL_UNPACK_BUFFER, pbo);
glBufferData(GL_PIXEL_UNPACK_BUFFER, 12, a, GL_STREAM_DRAW);
// Blit pbo to back buffer, but how?

// Release all
....

大多数教程[1]似乎将像素缓冲区复制到纹理,然后将此纹理应用于四边形,但此解决方案似乎执行了大量不必要的操作:复制数据,为纹理创建过滤,绘制四边形(意思是一个新的VBO)等等...

其他答案[2]谈论“Blitting”,但我无法得到它的工作。

此外,大多数关于OpenGL的信息仍然使用glDrawPixels,它被OpenGL 3.X弃用(和不可用)。

[1] http://www.songho.ca/opengl/gl_pbo.html

呈现TTF SDL2.0 opengl 3.1

[2] https://devtalk.nvidia.com/default/topic/453751/cuda-programming-and-performance/direct-access-to-frame-buffer-/

链接地址: http://www.djcxy.com/p/45741.html

上一篇: How to copy/render a Pixel Buffer to the back buffer in OpenGL 3.X

下一篇: OpenGL PBO texture uploading oddities