我正在阅读红皮书(OpenGL编程指南)中的程序纹理章节。在其程序纹理示例中,从应用程序传递到着色器的参数之一是纹理坐标。但是,它们没有显示如何生成纹理坐标。
有人可以举例说明在进行程序纹理时如何生成纹理坐标吗?
答案 0 :(得分:2)
我没有OpenGL编程指南,所以我不能专门评论他们的例子,但一般来说:
如果程序纹理基于二维坐标计算颜色,则这些纹理与普通纹理坐标没有区别。只需从应用程序中传入它们(或根据顶点着色器中的某些投影计算它们),就像平常一样。
如果程序纹理基于三维坐标计算颜色,则通常使用(未转换的)顶点位置作为程序纹理计算的输入。将顶点位置属性复制到顶点着色器中的varying
(或最近GLSL方言中的out
)vec3
变量。