0

我正在使用 OpenGL 开发游戏,这就是我想做的事情:

  1. 在游戏逻辑的迭代过程中,访问纹理的纹素进行计算。
  2. 仍然在相同的逻辑交互过程中,可能会修改纹理的纹素。
  3. 使用当前版本的纹理渲染游戏场景。
  4. 以类似的方式访问纹素数据开始另一个迭代。

我在使用 glGetTexImage() 时遇到问题,因为调用会使我的程序崩溃,而且我不完全确定这是我想要使用的。

我能看到的唯一直接方法是在系统内存中有一个缓冲区,其中包含我可以处理的纹素信息,并在每次迭代时从中生成一个新的 OpenGL 纹理。这似乎是一个糟糕的举动。

有什么帮助吗?

4

2 回答 2

3

有几种可能的方法可以做到这一点。

  1. 如果您不需要任何非纹理数据来修改纹理,则可以使用片段着色器。(乒乓球技术可能对此很有趣)
  2. 如果只替换了一小部分纹理并且您不需要担心性能或者它应该适用于旧显卡,则使用 glTexSubImage2D。
  3. 使用像素缓冲区对象。那应该比 glTexSubImage2D 更快。可以在此处找到有关此的更多信息。
于 2009-04-08T07:17:51.870 回答
0

我相信glTexSubImage2d是您正在寻找的。

于 2009-04-07T23:04:42.960 回答