我想在OS X上創建一個簡單的OpenGL 3.2核心配置文件應用程序。我通過Macports使用SDL2,但我懷疑這一點。我的理解是,我應該使用GLSL #version 150
和我的瑣碎片段着色器目前看起來是這樣的:OS X OpenGL 3.2不包含glBindFragDataLocation?
#version 150
out vec4 outputF;
void main() {
outputF = vec4(1.0, 0.0, 0.0, 1.0);
}
現在我相信我要告訴OpenGL該片段顏色在outputF
通過glBindFragDataLocation
功能設定。問題在於它似乎沒有在任何地方宣佈。該功能在3.2核心配置文件中不可用(與我的搜索相反),還是缺少頭文件?或者是什麼?
既然你已經建立了GLSL 1.5爲基準此着色器,你可以跳過不必完全使用'glBindFragDataLocation(...)'並使用'layout(location = 0)out vec4 outputF;'。請注意,片段着色器中第一個使用的'out'變量綁定到顏色緩衝區0開始,所以在大多數只寫入單個顏色緩衝區的應用程序中,您不需要混淆第一名。設置裝訂位置是一種很好的形式,但絕對不是必需的。 –
@ AndonM.Coleman謝謝,但是當指定佈局規範時,您會發現着色器編譯器錯誤,您只是簡單地讀取'佈局'位置'的無效使用'。 – Karl
@ AndonM.Coleman,GLSL 1.50不支持佈局限定符。在'#version'聲明工作後,在我的機器上'#extension GL_ARB_explicit_attrib_location:enable';而'#version 330'似乎也在某種程度上起作用 - 賣主驅動程序? GL 3.2也不能依賴。 –