【发布时间】:2013-02-27 16:53:39
【问题描述】:
当我尝试在我的 GLSL 顶点着色器中使用 gl_Normal 时,它保持 vec3,x 和 y 分量为 0,z 分量为 1.0。是否有一些启用正常计算的openGL语句?我正在尝试完成一个简单的着色程序,我已经将一个模型导入到世界中,但由于某种原因,内置变量 gl_Normal 不起作用。
【问题讨论】:
当我尝试在我的 GLSL 顶点着色器中使用 gl_Normal 时,它保持 vec3,x 和 y 分量为 0,z 分量为 1.0。是否有一些启用正常计算的openGL语句?我正在尝试完成一个简单的着色程序,我已经将一个模型导入到世界中,但由于某种原因,内置变量 gl_Normal 不起作用。
【问题讨论】:
您应该使用glNormalPointer(或glNormal)将顶点法线与顶点位置一起传递。
我建议将您的模型导入 3D 建模工具(如 Blender)中 - 它可以自动为您生成法线向量。然后只需将其保存并使用法线导入您的应用程序。
【讨论】:
glNormal3f 一起传递它们。 (您可能需要尽快切换到缓冲区对象 glVertexPointer 和 glNormalPointer 以提高性能)