如何在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