OpenGL中高效的纹理元素访问

时间:2009-04-07 22:51:23

标签: opengl textures

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

  1. 在游戏逻辑的迭代过程中,访问纹理的纹素以进行计算。
  2. 仍然在相同的逻辑交互期间,可能会修改纹理的纹素。
  3. 使用当前版本的纹理渲染游戏场景。
  4. 启动另一个具有类似访问texel数据的迭代。
  5. 我在使用glGetTexImage()时遇到麻烦,因为调用会导致我的程序崩溃,而且我还不完全确定这是我想要使用的东西。

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

    任何帮助?

2 个答案:

答案 0 :(得分:3)

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

  1. 如果您不需要任何非纹理数据来修改纹理,则可以使用片段着色器。 (ping-pong technique可能对此感兴趣)
  2. 如果只替换纹理的一小部分并且您不需要担心性能,或者它应该适用于较旧的图形卡,请使用glTexSubImage2D。
  3. 使用pixel buffer object。那应该比glTexSubImage2D快。关于这方面的更多信息可以找到here

答案 1 :(得分:0)

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

相关问题