在openGL 2d纹理中覆盖每像素的像素

时间:2015-02-04 10:47:01

标签: c++ opengl textures pixel

我想创建一个openGL 2D纹理,并通过它自己设置每个像素的RGBA值。有人可以给我解释我的问题吗?我没有在互联网上找到一个。

2 个答案:

答案 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绘制。

正如我记得的那样,在表现方面经常做得很差,所以它可能不是最好的方向。

请注意,此代码只是我的沙盒,可能不是最好的复制示例。