3 Stimmen

EXEC_BAD_ACCESS in 2-Zeilen-OpenGL-Programm

Das folgende einfache Programm erzeugt beim Ausführen einen EXEC_BAD_ACCESS (Segmentierungsfehler), und ich verstehe nicht, warum:

#include <OpenGL/gl.h>

int main(void) {
  const GLubyte * strVersion;
  // The next line gives an 'EXEC_BAD_ACCESS'
  strVersion = glGetString (GL_VERSION);
}

Ich bin in Xcode in OS X 10.6.5 ausgeführt, und ich bin Verknüpfung gegen die OpenGL-Framework. Jede Idee würde geschätzt werden.

6voto

SurvivalMachine Punkte 7510

Sie müssen einen OpenGL-Kontext erstellen, bevor Sie gl*-Funktionen aufrufen können. Es gibt verschiedene Möglichkeiten, dies zu tun, zum Beispiel mit GLUT oder SDL.

-1voto

James Williams Punkte 4191

Für die C-Spezifikation zur Erstellung der Variablen GLubyte rufen Sie diese mit

 const GLubyte* glGetString(GL_VERSION );

dann sollten Sie in der Lage sein, die Version zu erhalten. durch folgendes

 const char *GLVersionString = glGetString(GL_VERSION);
 //Or better yet, use the GL3 way to get the version number
 int OpenGLVersion[2];
 glGetIntegerv(GL_MAJOR_VERSION, &OpenGLVersion[0])
 glGetIntegerv(GL_MINOR_VERSION, &OpenGLVersion[1])

Hier finden Sie weitere grundlegende Informationen über glGetString:

 glGetString returns a pointer to a static string describing some aspect of the current GL connection. name can be one of the following:
 GL_VENDOR
     Returns the company responsible for this GL implementation.
     This name does not change from release to release.             
 GL_RENDERER
     Returns the name of the renderer.
     This name is typically specific to a particular configuration of a hardware platform.
     It does not change from release to release.              
 GL_VERSION
     Returns a version or release number.
 GL_SHADING_LANGUAGE_VERSION
     Returns a version or release number for the shading language.           
 GL_EXTENSIONS
     Returns a space-separated list of supported extensions to GL.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X