我正在尝试使用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
就像我说的,任何人都可以解释/理论问题的原因,并建议如何解决它们?或者可能有人有同样的问题,可以解释他们是如何解决的。