1.什么是glew?
之前有提到过,opengl不是一个开源库的名字,他只是一种技术路线或者开放性标准或者规范。
一般我们会用到的主要的两个库,glfw和glew,两个是有些依赖关系的库。
GLEW是用来扩展opengl加载与函数指针管理的库
2.glfw和glew有什么区别?
glew需要在 opengl上下文创建后进行初始化并引用。
glfwMakeContextCurrent(window);
if (glewInit() != GLEW_OK)
std::cout << "ERROR!" << std::endl;
上述代码 第一行是通过glfw来创建上下文,第二行是检查 glew是否初始化成功。
glfw:主要用来创建窗口、处理输入事件 例如鼠标键盘手柄等,支持多线程渲染。
glew:自动检测当前平台支持的opengl扩展,并使用现代opengl特性,例如几何着色器等。兼容不同显卡的驱动科学计算。
3.glew和其他库的对比
glut :早期的跨平台库,功能有限。
sdl:更多的多媒体支持能力,但是集成难度高
glad:glew的替代品,提供更灵活的加载方式。
4.下载

学习使用下载

下载完成后的主要文件

主要头文件

动态库和静态库
5.连接到项目
拷贝核心文件到项目文件下,通过相对路径进行引用
头文件引用:


静态库引用:


测试代码:
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
int main() {
GLFWwindow* window;
if (!glfwInit())
return -1;
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
if (glewInit() != GLEW_OK)
std::cout << "ERROR!" << std::endl;
std::cout << glGetString(GL_VERSION) << std::endl;
while (!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2f(-0.5f,-0.5f);
glVertex2f(0.0f,0.5f);
glVertex2f(0.5f,-0.5f);
glEnd();
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
6.常见问题:
连接失败,仔细检查文件地址设置。
初始化顺序问题
要先加载glew再加载glfw
#include <GL/glew.h>
#include <GLFW/glfw3.h>
使用上要先进行上下文创建再进行glew初始化
1747

被折叠的 条评论
为什么被折叠?



