简述
OpenGL:(英语:Open Graphics Library)是用于渲染2D、3D矢量图形的跨语言、跨平台的一个由 Khronos组织 制定并维护的规范(Specification)。
GLFW:是一个专门针对 OpenGL 的 C 语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建 OpenGL 上下文,定义窗口参数以及处理用户输入,把物体渲染到屏幕所需的必要功能,OpenGL 并不规定窗口创建和管理的部分,这一部分完全交由 GLFW 来实现。(还有其他类似的:GLUT 和 SDL 等)。
GLEW:由于 OpenGL 是一种 标准/规范,它需要由驱动制造商在驱动中来实现这份特定的规范。因为有许多不同版本的 OpenGL 驱动,OpenGL 的大多数函数在编译时(compile-time)是未知状态的,需要在运行时(run-time)来请求。这就是开发者的任务了,开发者获取所需的函数的地址,把它们储存在函数指针中以备后用。为了避免这种复杂的过程,我们需要 GLEW 来帮助我们简化函数的获取过程。(还有其他类似的:GLAD)。
GLAD是一个开源的库,它能解决我们上面 GLEW 的问题。GLAD 使用了一个在线服务。在这里能够告诉 GLAD 需要定义的 OpenGL 版本,并且根据这个版本加载所有相关的 OpenGL 函数。
SOIL:大多数图形学处理的任务都需要读取图片到内存当中。当前存在着各种各样的图片格式,例如 jpeg, bmp, png 等等。我们不可能自行编写读取不同图片格式的代码,因此需要一种通用的读取图片的库,它就是 SOIL。
GLM:在编写图形渲染代码中需要大量的使用到矩阵变换,向量变换以及各种针对矩阵和向量的计算。这一整套都由 GLM 库为我们提供。
安装 通过homebrew安装glew,glad; brew install GLFW ; brew install GLAD; 下载好这两个库以后具体参考这个文章http://blog.shenyuanluo.com/OpenGLEnvironment.html 都配置好以后 把下面的代码复制上运行出来一个界面就是成功了 #include #include <glad/glad.h> #include <GLFW/glfw3.h>
void framebuffer_size_callback(GLFWwindow* window, int width, int height) { glViewport(0, 0, width, height); }
void processInput(GLFWwindow *window) { if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true); }
int main(int argc, const char * argv[]) { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL); if (window == NULL) { std::cout << "Failed to create GLFW window" << std::endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
//
glViewport(0, 0, 800, 600);
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
while(!glfwWindowShouldClose(window))
{
processInput(window);
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
出来下面这个界面就是配置成功
