opengl - 每帧几何修改: OpenCL or GLSL geometry shader?

标签 opengl glsl opencl geometry-shader

我正在构建水面,我想要正弦顶点移动以获得波浪对水面的效果。在选择 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/

相关文章:

opengl - 非单调深度缓冲区; OpenGL 中的循环重叠

iphone - 在 iPhone 屏幕上绘图时识别图案

java - gl_Normal 计算不正确

opengl - 如何在 PyOpenGL 中将纹理复制到 pbo 中?

java - 不了解顶点着色器转换

java - 在测试套件中设置和拆除 openCL 单元测试的正确方法?

java - OpenCL 编译失败 aparapi

c++ - 优化 openCL 中的分支 for 循环

java - 如何设置平面与相机具有相同的旋转?

c++ - 在 OpenGL 中绘制斯坦纳罗马曲面