任何人都可以提供类似于固定功能管道的着色器吗?
我需要片段着色器默认最多,因为我在网上找到了类似的顶点着色器。但如果你有一对应该没问题!
我想使用固定管道,但具有着色器的灵活性,所以我需要类似的着色器,以便我能够模仿固定管道的功能。
非常感谢!
我是新来的,所以如果您需要更多信息,请告诉我:D
这就是我想要复制的内容:(纹理单元0)
多数民众赞成。这就是我想要从固定功能管道复制的所有功能。谁能告诉我一个如何用着色器复制这些东西的例子?
答案 0 :(得分:4)
这里有几个问题会使使用着色器更难实现这一点。
首先,除了使用固定功能功能外,您还使用立即模式。在转换到着色器之前,应切换到顶点数组。您可以编写一个类,它可以在glBegin (...)
和glEnd (...)
之间执行类似模式的命令,如果您绝对需要以这种方式构建软件,则将它们推送到顶点数组中。
至于glTranslatef (...)
和glOrtho (...)
这些并不特别特别。它们创建平移矩阵和正交投影矩阵,并乘以“当前”矩阵。目前还不清楚您使用的是哪种语言,但这些功能的一种可能替代方法可能来自使用像glm
(C ++)这样的库。
最大的障碍将是摆脱固定功能管道思考的“当前”状态心态。使用着色器,您可以完全控制几乎每个状态,并且您不必使用乘以“当前”矩阵或设置“当前”颜色的函数。您只需将着色器所需的确切矩阵或颜色值传递给着色器即可。这是解决这些问题的一种更好的方法,这就是为什么我诚实地认为你应该完全放弃固定功能方法,而不是试图模仿它。
这就是为什么你希望“使用固定功能管道但具有着色器的灵活性”从根本上没有多大意义。
说了这么多,在OpenGL兼容模式下,GLSL中有一些保留字引用了许多固定功能结构。这些内容包括gl_MultiTexCoord<N>
,gl_ModelViewProjectionMatrix
等。它们可以用作过渡性辅助,但从长远来看,实际上不应该依赖它们。
答案 1 :(得分:1)
还有这个问题:OpenGL Fixed function shader implementation他们指向一些网络资源。
OpenGL ES 2 book包含第8章(顶点着色器)和第10章(片段着色器)中OpenGL ES 1.1固定函数管道的实现。
不幸的是,这些着色器似乎没有包含在本书的示例代码中。另一方面,阅读书籍和输入代码当然是值得的。