Opengl/glsl着色器动画和照明问题



因此,最近我开始认真研究(或者至少我认为是这样)opengl/glsl和着色器。我设法构建和渲染VBO,创建和编译着色器,并以某种方式处理它们。我正在使用顶点着色器来修复我的opengl视图(更正纵横比),并执行动画。这是通过变量矩阵操作实现的。

有人会问我为什么要使用顶点着色器制作动画,但阅读全球各地的文章时,我得到的印象是最好保持静态VBO,而不是不断更新它们。某种GPU>CPU之争。现在我可能错了,这就是为什么我在这件事上寻求援助。我的观点是,在未来,我可能会制作一款游戏,(例如)玩家可以抓取很多硬币,我希望它们静态存储在GPU端。然后使用着色器旋转它们。

继续……"让光明存在">

我还设法使用顶点着色器中的法线来再现照明。这一切都很好,除了光线随着我的立方体旋转(目前我使用立方体作为测试假人)。现在,我知道这里出了什么问题。它是我的顶点着色器,可以转换所有的东西(甚至我想是我的光源)。我可以想出一两种方法来解决这个问题。一种是在我的光源上施加反向负变换力,这样我就可以在其他物体旋转时保持它静止。

这就是一切模糊的地方。我正在联系stackoverflow寻求如何前进的指导。我试图从某种意义上更大地思考:如果在未来,我会有很多对象想要为其执行基本动画(如旋转、缩放、平移),该怎么办。这需要我有不同的着色器,甚至是一个包含每个函数的压缩着色器吗?我该如何使用它呢。在同一着色器内对每个对象进行渲染之前,我会传递不同的值吗?

现在,老实说,我想处理照明问题。但我有一种感觉,我即将采用的方法将设定我在着色动画方面的一般方法。有人建议(在另一个问题的stackoverflow中)应该真正使用不同的着色器,并在每次VBO渲染之前交换它们。我担心这是否足够有效,但我绝对喜欢这个想法。

有人建议(在另一个问题的stackoverflow中)应该真正使用不同的着色器,并在每次VBO渲染之前交换它们。

这是哪个问题/答案?因为通常应该尽可能避免切换着色器。也许这个人指的是制服,这是着色器的参数,但可以便宜地更改。

此外,你的问题过于宽泛,也不太简洁(所有的背景故事都掩盖了实际问题)。我强烈建议你把你的疑虑分成几个小问题,这些问题可以单独回答。

最新更新