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

时间:2014-05-06 14:09:48

标签: opengl opengl-3 pbo

我正在尝试执行类似旧的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

Render TTF SDL2.0 opengl 3.1

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

0 个答案:

没有答案