我想用 OpenGL 渲染一个矢量场可视化。现在,我有一个 3D 立方体,里面装满了需要用箭头替换的点。我已经阅读了很多关于 OpenGL 中的 Point Sprites 的内容,它们似乎非常适合我的需求。
我还没有真正使用纹理,所以有一些关于将它们与点精灵一起使用的问题:
首先,是否可以仅使用纹理轻松地用箭头替换我的点?如果是这样,是否可以使用着色器将这些点精灵旋转或缩放任意程度?
如果除了点精灵之外还有其他可能性来实现这一点,那么听到它们也会很棒。我正在使用 OpenGL 4.2。
我想用 OpenGL 渲染一个矢量场可视化。现在,我有一个 3D 立方体,里面装满了需要用箭头替换的点。我已经阅读了很多关于 OpenGL 中的 Point Sprites 的内容,它们似乎非常适合我的需求。
我还没有真正使用纹理,所以有一些关于将它们与点精灵一起使用的问题:
首先,是否可以仅使用纹理轻松地用箭头替换我的点?如果是这样,是否可以使用着色器将这些点精灵旋转或缩放任意程度?
如果除了点精灵之外还有其他可能性来实现这一点,那么听到它们也会很棒。我正在使用 OpenGL 4.2。
点精灵总是屏幕对齐的正方形。并且它们具有依赖于实现的最大大小。
如果你需要做这样的事情,你应该使用一个几何着色器,它将点作为输入,并输出一个四边形(作为三角形带的 4 个顶点)。然后你可以做任何你想做的事。
请注意,您应该尽可能少地传递信息,以免脱离 GS。理想情况下,为了获得最佳性能,您应该只输出到gl_Position
和输出到一个vec2
指示特定位置在四边形中的位置。
是否有可能......使用着色器以任意程度缩放这些点精灵?
不,点精灵有一个实现定义的大小上限。