Mac OS 不支持 GLSL 1.2+?

GLSL 1.2+ not supported on Mac OS?

我收到错误消息

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 个功能。

我使用的是 2011 款 MacBook Pro 运行 El Captian 10.11.2,并使用来自 OpenTK 网站的最新版本 OpenTK.dllOpenTK.dll.config

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

我必须做什么才能支持 330 功能?

如果我没记错的话 MAC 最新 OS 的驱动程序在声明版本方面存在一些问题 330.In 事实上根据我的经验它是 GL 3.2 然后他们添加了支持适用于 Maveric 和其他最新 OS 版本的 4.1。您可以只使用 410,因为这是当前最高的 GL 配置文件 MAC OS X 使用,当然它应该从 330.

导出所有核心扩展

所有 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)
{
}