我收到了错误
ERROR: 0:1: '' : version '330' is not supported
ERROR: One or more attached shaders not successfully compiled
尝试编译以下着色器时:
#version 330
in vec3 vPosition;
in vec3 vColor;
out vec4 color;
uniform mat4 modelview;
void main()
{
gl_Position = modelview * vec4(vPosition, 1.0);
color = vec4( vColor, 1.0);
}
将着色器重新编写为版本110规范编译并运行良好:
#version 110
attribute vec3 vPosition;
attribute vec3 vColor;
varying vec4 color;
uniform mat4 modelview;
void main()
{
gl_Position = modelview * vec4(vPosition, 1.0);
color = vec4( vColor, 1.0);
}
这工作了一段时间,但现在我需要使用330个功能。
我使用的是运行El Captian 10.11.2的2011 MacBook Pro,并使用OpenTK网站上的最新版OpenTK.dll
和OpenTK.dll.config
。
我已经尝试通过将libSDL2.dylib
从opentk/Dependencies/x86
复制到我的应用程序目录来启用SDL2后端,这是由其他用户建议的,但没有区别。
我该怎么做才能支持330个功能?
答案 0 :(得分:1)
所有MacBook Pro至少支持OpenGL 3.3。问题出在OpenTK的GameWindow构造函数的默认值中。他们的官方文档似乎暗示它默认为OpenGL 2.1,但在Windows上它肯定不会那样。
添加此覆盖修复了它。
public Game() : base(800, 600, new GraphicsMode(new ColorFormat(8), 3, 3, 4), "Welcome To Hell", GameWindowFlags.Default, DisplayDevice.Default, 3, 0, GraphicsContextFlags.Default)
{
}
答案 1 :(得分:0)
如果我没记错,最新操作系统上的MAC驱动程序在声明像330这样的版本时存在一些问题。实际上根据我的经验,它是GL 3.2,然后他们在Maveric和其他最新的OS版本上添加了对4.1的支持。您可以使用410,因为这是当前最高的GL配置文件MAC OS X使用的,当然它应该从330导出所有核心扩展。