我在學習如何編寫OpenGL着色器。爲什麼在我的機器上運行時,此代碼段錯誤? (我使用Ubuntu 10.04和我把它叫做shader.cpp)爲什麼OpenGL着色器分段在調用glCreateShader時出現錯誤?
#include <GL/glut.h>
#include <iostream>
using namespace std;
int
main (int argc, char **argv)
{
GLuint myVertexShader = glCreateShader(GL_VERTEX_SHADER);
return 0;
}
我用下面的Makefile編譯它:
CC=g++
CFLAGS=-c -Wall -DGL_GLEXT_PROTOTYPES
LDFLAGS= -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm
SOURCES=shader.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=shader
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o [email protected]
.cpp.o:
$(CC) $(CFLAGS) $< -o [email protected]
clean:
rm -rf *o $(EXECUTABLE)
check-syntax:
$(CC) -o nul -S ${CHK_SOURCES}
這似乎是分割的斷裂該行稱爲glCreateShader。我一直沒有找到這個問題的根源。我是初學者。謝謝!
注意:該代碼代表的是我第一次嘗試使用OpenGL編寫簡單着色器。如果完全錯誤,請隨時發佈一些工作代碼。我真正想要的是獲得我可以編譯和運行的東西。
你知道如何使用gdb嗎?調試將爲您提供有關如何解決問題的更多有用信息。 – colechristensen 2011-04-20 01:33:20
是的,我使用GDB來確定seg故障是在調用glCreateShader的行上,但是這是儘可能多的信息,因爲我知道如何獲取。謝謝! - Steve – 2011-04-20 01:35:23
也許就是這樣吧: 「如果glCreateShader在執行glBegin和執行glEnd之間執行,則會生成GL_INVALID_OPERATION。」 – colechristensen 2011-04-20 01:39:15