Mac OS不支持GLSL 1.2+?

时间:2015-12-23 08:34:55

标签: c# macos opengl opentk

我收到了错误

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.dllOpenTK.dll.config

我已经尝试通过将libSDL2.dylibopentk/Dependencies/x86复制到我的应用程序目录来启用SDL2后端,这是由其他用户建议的,但没有区别。

我该怎么做才能支持330个功能?

2 个答案:

答案 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导出所有核心扩展。