gpt4 book ai didi

opengl - Nvidia 驱动程序上出现“out 不能与非变化的”着色器编译错误,Intel 工作正常,AMD 有另一个错误

转载 作者:行者123 更新时间:2023-12-03 04:16:15 28 4
gpt4 key购买 nike

我尝试使用以下顶点着色器程序运行一个简单的 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 上运行了此代码,结果不同。

  • 使用Intel的驱动程序,没有错误,运行完美。
  • 使用 Nvidia 的驱动程序时,错误是“out 不能与非变化的 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

Intel 和 Nvidia 的类似,都是 GLSL 1.50 编译器。 AMD 的是 GLSL 4.20

下面是问题:-

  1. 在这种情况下,英特尔和 Nvidia 的编译器中哪一个可以正常工作?
  2. AMD 编译器的错误消息的真正含义是什么?我需要什么来纠正错误。

最佳答案

您必须始终使用 #version directive 。如果您不这样做,那么编译器将假定您指的是 GLSL 版本 1.10。这意味着 out 不是有效的关键字。

关于opengl - Nvidia 驱动程序上出现“out 不能与非变化的”着色器编译错误,Intel 工作正常,AMD 有另一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15234281/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com