2015-12-23 115 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作爲最新版本 –