所以,我正在尝试修改精灵的特定像素。目前我通过创建SetPixel(int x, int y, Color color)
函数使其成功。它的工作原理是修改纹理信息(RGBA值),然后将其传递给精灵。但这很慢:
1)使用CPU而不是GPU(I HOPE)我可以使用着色器来提高性能。
2)每次修改单个像素时,我都必须重新上传修改后的纹理。
这个问题对我很重要。如何使用着色器修改特定像素?我只能修改每个Vertex的颜色,这不是我想要的。
有什么建议吗?
答案 0 :(得分:0)
首先,您不必上传所有纹理并在每次像素更新后。您可以使用glCopyTextSubImage
缓存更改并更新最小的矩形。
如果您真的想尝试GPU更新,可以使用计算着色器(但是,某些旧硬件不支持它们)或将纹理数据绑定为SSBO并直接写入它而不使用单独的帧缓冲对象。