2014-08-30 112 views
2

我開始使用http://www.opengl-tutorial.org來拾取OpenGL。
它使用following code來加載和編譯的着色器(聯繫的,因爲代碼是爲這個職位太長時間,我認爲它的東西與我的着色器)損壞的頂點和片段着色器

運行此代碼,它打印出「錯誤:編譯頂點着色器已損壞」和「錯誤:編譯的片段着色器已損壞」。我着色器下面

的Vertex Shader

#version 330 core 
out vec3 color; 

void main(){ 
    color = vec3(1,0,0); 
} 

片段着色器

#version 330 

layout (location = 0) in vec3 position; 

void main() 
{ 
    gl_Position.xyz = position; 
    gl_Position.w = 1.0; 
} 

我使用的XCode 5.1.1時,OpenGL 3.3和GLSL 3.30。

如果你們能夠幫助我過去這一點,那將是非常棒的。我遇到了一個沒有使用VAO的YouTube教程,所以我自己去學習這些東西,所以我可以用我自己的代碼編寫教程。

預先感謝

+0

我想這只是你在你的問題中複製它們的方式,但你的頂點和片段着色器是錯誤的。 – GuyRT 2014-08-31 08:21:33

回答

1

這是與XCode的出現並且通常是由文本編碼或不適當空終止字符串引起的一個常見問題。在它們的結尾處可能有非打印字符。

您可以在調試器中查看VertexShaderCodeFragmentShaderCode字符串,並查看是否有任何錯誤的字符或者它們是否以空字符結尾。

我發現有人遇到相同的錯誤herehere

要解決這些問題,請使用文本編輯,文本伴侶或崇高文本(一些非常基本的文本編輯器)打開GLSL文件,並將它們轉換爲文本並將它們保存爲新文件。

+1

我遇到的第一個問題是「if(VertexShaderStream.is_open())」返回false。我添加了一個else塊,當文件沒有打開並且程序在那裏停止時會引發致命錯誤。 – 2014-08-31 11:10:34

+1

編輯:我解決了這個問題。着色器現在可以進行編譯(不發生錯誤)。現在,當我嘗試使用該程序時,什麼都沒有發生(我得到一個普通的黑屏)。我將添加GL錯誤檢查 – 2014-08-31 11:21:15

+1

我知道了!着色器編譯完美。我的問題是(當然)非常愚蠢。我啓用了雙緩衝,但我沒有交換我的窗戶。 – 2014-08-31 11:43:19

相關問題