这里是一个想要入行游戏行业的平平无奇大学生,希望能够通过写博客来巩固自己学的知识。
一、现代OpenGl
在“openGl新手入门学习笔记(一)”里提到了古典openGl(旧版openGl)的概念,值得一提的是旧版openGl早已经不被使用了。
旧版OpenGL 与 新版OpenGL:https://blog.csdn.net/watersevenmmfx/article/details/106344145
现在所使用的现代openGl是一个个早就在你的显卡驱动里写好的二进制文件,它们早就存在在你的电脑里了,我们需要特殊的工具来调用这些写好的函数,这里使用glew。glew和前面提到的glfw各司其职,glew负责调用函数,glfw负责管理窗口。
OpenGL之gult/freeglut/glew/glfw/glad的联系与区别:
https://blog.csdn.net/qq_38446366/article/details/115328051
二、下载glew并在vs2022中配置环境
前往官网下载glew,下载二进制文件即可。
下载好后解压,并将其复制到工程文件目录下的dependencies\GLEW路径中
开始配置环境,配置方式与“openGl新手入门学习笔记(一)”里glfw的配置方式相同,这里不多赘述。
值得注意的是依赖项里添加的是glew32s.lib,因为使用静态链接就好。
一切配置好后在源文件里加上"#include “GL/glew.h” ,点击生成
发现存在error,观察输出信息:
fatal error C1189: #error: gl.h included before glew.h
由此可见,错误的原因是“gl.h比glew.h先包含进去”,因此将"#include "GL/glew.h"提前,让glew.h先被include即可消除该错误。
三、阅读glew的官方文档,并尝试初始化glew
在解压后的doc文件夹中就有着glew的官方文档,打开basic.html
根据官方文档我们可以知道Initializing GLEW的步骤:
First you need to create a valid OpenGL rendering context and call glewInit() to initialize the extension entry points.
If glewInit() returns GLEW_OK, the initialization succeeded and you can use the available extensions as well as core OpenGL functionality.
即在调用glewInit()来初始化前必须先创造一个OpenGL的渲染上下文。
若没有创造直接初始化:
可以发现glew初始化失败,输出err。
glfwMakeContextCurrent(window)函数创建了渲染上下文,因此将初始化代码放在该函数下面即可初始化成功。
未输出err,初始化成功。