繁体   English   中英

带有片段着色器的OpenGL SetPixel

[英]OpenGL SetPixel with a fragment shader

因此,我正在尝试修改Sprite的特定像素。 目前,我已经通过创建自己的SetPixel(int x, int y, Color color)函数来使其工作。 它通过修改纹理的info(RGBA值)并将其传递给sprite来工作。 但这很慢:

  1. 使用CPU代替GPU(我希望),我可以使用着色器来提高性能。
  2. 每次修改单个像素时,我都必须重新上传修改后的纹理。

这个问题对我来说很重要。 如何使用着色器来修改特定像素? 我只能修改每个顶点的颜色,这不是我想要的。

有什么建议么?

首先,您不必上载所有纹理,并且在每次像素更新后都不需要上载。 您可以使用glCopyTextSubImage缓存更改并更新最小的矩形。

如果您真的想尝试GPU更新,则可以使用计算着色器(但是,某些旧硬件不支持它们)或将纹理数据绑定为SSBO并直接写入其中,而无需使用单独的帧缓冲区对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM