我正在构建水面,我想要正弦顶点移动以获得波浪对水面的效果。在选择 OpenGL 之前,我的理解是这最好在几何着色器中完成。
然而,目前我正在使用 OpenGL 2.1 的 OpenGL ES 2.0 子集,严格利用现代/可编程管道。此版本中不提供几何着色器。
我有三个选择:
- 在 CPU 上进行所有顶点修改,并为所有水面的每一帧上传 VBO,从而仅使用 OpenGL 2;
- 升级到 OpenGL 3.2 并为此使用几何着色器;
- 使用 OpenGL 2 和 OpenCL 来修改顶点,OpenCL 使用 GPU 作为上下文来减少瓶颈。
首先我想让事情变得简单。因此,考虑到我还不了解 OpenCL,也许我应该坚持向 CPU 发送大批量数据?
最佳答案
您不需要几何着色器来替换顶点。仅当您想要创建新顶点(例如曲面分割)时才真正需要几何着色器。如果您只想用正弦波替换现有顶点,您可以在顶点着色器中轻松完成。
关于opengl - 每帧几何修改: OpenCL or GLSL geometry shader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495534/