问题:
我正在从http://www.arcsynthesis.org/gltut/index.html教程中学习OpenGL,我真的很难获得教程 13:几何冒名顶替者工作(6 小时以上),现在它真的在工作代码中的微小变化实际上应该是无操作的,我需要你的帮助来找出它为什么会改变任何东西。
解释 - 编辑:
问题在于,在代码未更改的情况下,片段着色器没有从几何着色器获得正确的输入,但是通过将几何着色器的输出接口块替换为单独的变量或给块一个实例名称,程序可以正常工作。但是这些更改应该是无效的。
问题可能是名称冲突。
像这样它不起作用:
in VertexData
{
vec3 cameraSpherePos;
float sphereRadius;
} vert[];
out FragData
{
flat vec3 cameraSpherePos;
flat float sphereRadius;
smooth vec2 mapping;
};
void main()
{
mapping =
cameraSpherePos =
sphereRadius =
EmitVertex();
/* mapping's value doesn't get to the fragment shader correctly */
}
但是,要么给 FragData 一个实例名称,如 frag,并使用 frag.mappaing instad 映射,要么使用 3 个单独的变量来解决问题。
为什么没有实例名称就不能工作?
编辑:这似乎是一个驱动程序问题。