GLSDK - 无法执行示例OpenGL程序

时间:2015-03-22 23:48:48

标签: c++ opengl windows-8.1

我正在检查我的OpenGL安装工作正常,但我的示例程序在执行崩溃(没有真正的错误消息提示)。我正在使用非官方的 GLSDK http://glsdk.sourceforge.net/docs/html/index.html)发行版并在Windows 8下编译它。

该计划(http://www.transmissionzero.co.uk/computing/using-glut-with-mingw/

#include <glload/gl_3_2_comp.h>
#include <GL/freeglut.h>


void keyboard(unsigned char key, int x, int y);
void display(void);


int main(int argc, char** argv)
{
  glutInit(&argc, argv);
  glutCreateWindow("GLUT Test");
  glutKeyboardFunc(&keyboard);
  glutDisplayFunc(&display);
  glutMainLoop();

  return EXIT_SUCCESS;
}


void keyboard(unsigned char key, int x, int y)
{
  switch (key)
  {
    case '\x1B':
      exit(EXIT_SUCCESS);
      break;
  }
}


void display()
{
  glClear(GL_COLOR_BUFFER_BIT);

  glColor3f(1.0f, 0.0f, 0.0f);

  glBegin(GL_POLYGON);
    glVertex2f(-0.5f, -0.5f);
    glVertex2f( 0.5f, -0.5f);
    glVertex2f( 0.5f,  0.5f);
    glVertex2f(-0.5f,  0.5f);
  glEnd();

  glFlush();
}

我知道#include <glload/gl_3_2_comp.h>是罪魁祸首,因为如果我将此行更改为#include <GL/gl.h>,那么示例程序运行正常并在黑色背景上显示一个漂亮的红色正方形...或者如果我删除display()函数的内容也可以运行程序。

问题是:我需要使用OpenGL 3.x或更高版本的API,因此我不能只包含过时的操作系统标题(Windows 8)。

My Linker设置(在Code :: Blocks中):

  • glloadD
  • glimgD
  • glutilD
  • glmeshD
  • freeglutD
  • glu32
  • opengl32
  • GDI32
  • WINMM
  • USER32

使用包含路径:

  • glsdk \ glload \ lib中
  • glsdk \ glimg \ lib中
  • glsdk \ glutil \ lib中
  • glsdk \ glmesh \ lib中
  • glsdk \ freeglut \ lib中

和#Defines:

  • FREEGLUT_STATIC
  • _LIB
  • FREEGLUT_LIB_PRAGMAS = 0

1 个答案:

答案 0 :(得分:1)

基于GL Load documentation,您似乎需要明确初始化它:

#include <glload/gl_load.h>
...
ogl_LoadFunctions();

设置GLUT后需要进行ogl_LoadFunctions()调用。