覆盖openGL 2d纹理中的每像素像素
Overwrite pixel per pixel in an openGL 2d texture
我想创建一个openGL 2D纹理,并自行设置每个像素的RGBA值。有人能给我解释一下我的问题吗?我在网上没有找到。
如果你只是想写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则不然。
不久前,我在玩OpenGL时做了这样的事情。
请在GitHub上查看此处的代码。你可以在main.cpp
中找到它。
基本上,我的想法是创建一个浮点数组,设置值,用glBufferData
复制到GPU,并用glDrawElements
绘制。
我记得,就表现而言,经常这样做非常糟糕,所以这可能不是最好的方向。
还请注意,这段代码只是我的沙盒,可能不是最好的复制示例。
相关文章:
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何将CMSampleBufferRef/CIImage/UIImage转换为像素,例如uint8_t[]
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 如何使用 sdl2 快速绘制像素网格?
- 如何在C++中进行像素操作? - Linux
- 获取 OpenGL 纹理中特定像素的颜色
- C++ / OpenGL:纹理到像素图示例 - 缩小转换误差
- 覆盖openGL 2d纹理中的每像素像素
- SDL 从纹理中读取像素
- 从 SDL2 纹理获取像素信息
- SDL2 纹理的像素格式和表面颜色遮罩
- 渲染到纹理,读取像素的结果大部分是黑色的
- 创建1像素的纹理问题
- 访问转换后的纹理的像素数据
- 为32位纹理(R11F_G11F_B10F)的每个像素存储3个带符号浮点(从-4到4)