OpenGL does not report errors, so you should query it periodically to determine whether any errors have occured. Here is a simple procedure for checking for the occurrence of a run-time error in OpenGL. The string argument "checkPoint" is something you can set to provide an indication of the context in the procedure was called, e.g., ...(your OpenGL lighting setup code)... checkGLerror("lighting setup"); ...(your OpenGL texture setup code)... checkGLerror("texture setup"); C++ version: (assuming: using namespace std;) void checkGLerror(const string& checkPoint) { GLenum errCode; while ((errCode = glGetError()) != GL_NO_ERROR) { cerr << "OpenGL Error at " << checkPoint << ": " << gluErrorString(errCode) << endl; } cerr.flush(); } C version: void checkGLerror(char* checkPoint) { GLenum errCode; while ((errCode = glGetError()) != GL_NO_ERROR) { fprintf(stderr, "OpenGL Error at %s: %s\n", checkPoint, gluErrorString(errCode)); } fflush(stderr); }