2015-12-23 81 views
0

我recieving错误Mac OS不支持GLSL 1.2+吗?

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

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

我必须做些什么来支持330个功能?

回答

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) 
{ 
} 
0

如果我没记错的话,最新操作系统上的MAC驱动程序在声明330版本时会遇到一些问题。事实上,根据我的经验,它是GL 3.2,然后他们在Maveric和其他最新的操作系统版本上添加了对4.1的支持。您可以使用410,因为这是MAC OS X使用的当前最高GL配置文件,当然它应该导出330的所有核心扩展名。

+0

我的问题是我不能只用410或330.吐'版本“410”没有supported' –

+0

什么是你的硬件和操作系统的版本?你有没有检查过它支持的GL版本?安装一些GL瓶盖查看器,看看你到达那里。 –

+0

另外,如果吐出410不支持,那么330也不被支持。因为在GL4.1之前苹果有GL3.2作为最新版本 –