我想创建一个openGL 2D纹理,并通过它自己设置每个像素的RGBA值。有人可以给我解释我的问题吗?我没有在互联网上找到一个。
答案 0 :(得分:1)
如果你只是想要写出2D纹理的像素,你可以简单地使用glTexImage2D,它使用一个缓冲区来指定你想要上传到纹理的像素数据(https://www.opengl.org/sdk/docs/man/html/glTexImage2D.xhtml)。或者,您可以使用glTexSubImage2D来写入纹理像素的一部分(https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexSubImage2D.xml)。如果您正在寻找与帧缓冲区类似的东西,可以使用glDrawPixels(https://www.opengl.org/sdk/docs/man2/xhtml/glDrawPixels.xml)。
如果目标是后备缓冲区,则尝试通过将其绑定为帧缓冲区来绘制到纹理的精确像素值,然后渲染完全覆盖它的纹理四边形。但是,此过程受混合和可能的像素中心问题影响,而glDrawPixels则不然。
答案 1 :(得分:0)
我在不久前玩过OpenGL时做过类似的事情。
查看代码here, on GitHub。
您可以在main.cpp
找到它。
基本上,我的想法是创建一个浮点数组,设置值,用glBufferData
复制到GPU并用glDrawElements
绘制。
正如我记得的那样,在表现方面经常做得很差,所以它可能不是最好的方向。
请注意,此代码只是我的沙盒,可能不是最好的复制示例。