EXEC_BAD_ACCESS в двухстрочной программе OpenGL - PullRequest
3 голосов
/ 17 декабря 2010

Следующая простая программа выдает EXEC_BAD_ACCESS (ошибка сегментации) при запуске, и я не понимаю почему:

#include <OpenGL/gl.h>

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

Я работаю в Xcode в OS X 10.6.5, и я работаю с OpenGL. Любые идеи будут оценены.

Ответы [ 2 ]

5 голосов
/ 17 декабря 2010

Вы должны создать контекст OpenGL, прежде чем сможете вызывать функции gl *.Есть несколько способов сделать это, например, используя GLUT или SDL.

0 голосов
/ 17 декабря 2010

Для спецификации C для создания переменной GLubyte вы называете ее

 const GLubyte* glGetString(GL_VERSION );

тогда вы сможете получить версию. по следующему

 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])

вот более основная информация о 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.
...