在发布时使用GLEW崩溃的测试程序

时间:2014-11-12 21:02:23

标签: windows opengl mingw glew

我正在尝试使用MinGW在Eclipse中使用OpenGL。 到目前为止,我已经能够正确设置GLFW,现在我正在尝试使用GLEW加载OpenGL指针。

我下载了GLEW源代码并使用Building glew on windows with mingw中的说明进行构建,但似乎没有出现任何问题。

我有一个我想要运行的测试程序。如果我注释掉对GLEW的调用(第32到40行)

,程序将运行并打开窗口
/*USE OUR OPENING LIBRARY GLEW TO LOAD OPENGL FUNCTIONS*/
glewExperimental = GL_TRUE;
glewInit();

/*Test that GLEW was loaded by calling the OpenGL function glGenBuffers*/
GLuint vertexBuffer;
glGenBuffers(1, &vertexBuffer);

printf("%u\n", vertexBuffer);

然而,当我尝试对glew进行任何调用时 - 设置glewExperimental或调用glewInit() - 程序构建正常但是当我运行它时,程序崩溃并显示错误消息“HelloGLEW.exe已停止工作”。这是完整的错误消息,没有其他错误消息。

任何人都可以解释/理论问题的原因,并建议如何解决它们?或者可能有人有同样的问题,可以解释他们是如何解决的。

这是完整的程序代码:

//Opening Toolkit: GLEW (OpenGL Extention Wrangler)
#define GLEW_STATIC
#include <GL/glew.h>

//Window Toolkit: GLFW
#include <GLFW/glfw3.h>

#include <stdio.h>

int main(void)
{
    /* USE GLFW TO CREATE OUR CONTEXT AND WINDOW*/
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello GLEW", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);



    /*USE OUR OPENING LIBRARY GLEW TO LOAD OPENGL FUNCTIONS*/
    glewExperimental = GL_TRUE;
    glewInit();

    /*Test that GLEW was loaded by calling the OpenGL function glGenBuffers*/
    GLuint vertexBuffer;
    glGenBuffers(1, &vertexBuffer);

    printf("%u\n", vertexBuffer);



    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

我按顺序将它与glew32,glu32,glfw3,opengl32和gdi32联系起来。以下是编译命令:

g++ "-IC:\\Libraries\\GLFW3\\include" "-IC:\\Libraries\\GLEW\\include" -O0 -g3 -Wall -c -fmessage-length=0 -o main.o "..\\main.cpp" 
g++ "-LC:\\Libraries\\GLFW3\\i386\\lib-mingw" "-LC:\\Libraries\\GLEW\\lib" -o HelloGLEW.exe main.o -lglew32 -lglu32 -lglfw3 -lopengl32 -lgdi32 

就像我说的,任何人都可以解释/理论问题的原因,并建议如何解决它们?或者可能有人有同样的问题,可以解释他们是如何解决的。

0 个答案:

没有答案