我尝试使用以下顶点着色器程序运行一个简单的 OpenGL 3 应用程序:-
in vec4 vPosition;
out vec2 otexcoord;
uniform mat4 modelview;
uniform mat4 projection;
void main()
{
gl_Position = projection * modelview * vPosition;
otexcoord.s = vPosition.x;
otexcoord.t = vPosition.y * -1.0;
};
我已经在来自不同公司的 3 个 GPU 上运行此代码,结果不同。
- 使用英特尔的驱动程序,没有错误,并且运行良好。
- 使用 Nvidia 的驱动程序,错误是“out can't be used with non-variable otexcoord”。
- 使用 AMD 的驱动程序,错误是“GL3 前向兼容上下文不支持隐式版本号 110”
AMD 的似乎是最不明显的。事实上,我对此一无所知。
下面是一些查询字符串
- 英特尔:OpenGL 3.2.0 - 构建 9.17.10.2932 GLSL 1.50 - 构建 9.17.10.2932
- Nvidia:OpenGL 3.2.0 GLSL 1.50 NVIDIA 通过 Cg 编译器
- AMD:OpenGL 3.2.12002 核心配置文件上下文 9.12.0.0 GLSL 4.20
英特尔和英伟达的类似,都是 GLSL 1.50 编译器。AMD 是 GLSL 4.20
下面是问题:-
- 在英特尔和英伟达的编译器之间,哪一个在这种情况下工作正常?
- AMD 编译器的错误信息到底是什么意思?我需要什么来纠正错误。