openGL
openGL
一、搭建环境
下载vs
下载glfw
https://www.glfw.org/download.html(下旧版本,新版本没有找到一些文件)
接入

二、创建项目
新建一个空的项目,选择添加空的项目

选择c++

然后再次右键属性,发现这里已经有c++了

属性选择【常规】-> 【所有配置】+【所有平台】

然后选择【附加包含目录】选进去这个include库

接着选链接器的附加包含目录

lib是编译的时候用到的,如果完成源代码的编译,只需要lib,如果要使得动态库的程序运行起来,只需要dll。

新增三个资料库
opengl32.lib
glfw3.lib
glew32s.lib
新建测试代码
#include<iostream>//使用print
#define GLEW_STATIC
#include <GL/glew.h>
#include<GLFW/glfw3.h>
int main() {
printf("hihihi");
while (true) {
//do nothing
}
}

三、helloworld window
#include<iostream>//使用print
#define GLEW_STATIC
#include <GL/glew.h>
#include<GLFW/glfw3.h>
int main() {
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow(800,600,"my opengl window",NULL,NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
//Init GLEW
glewExperimental = true;
if (glewInit() != GLEW_OK) {//初始化不成功
printf("Init GLEW failed.");
glfwTerminate();
return -1;
}
//
glViewport(0, 0, 800, 600);
//Render Loop
while (!glfwWindowShouldClose(window)) {
glfwSwapBuffers(window);
glfwPollEvents();
}
//释放/删除之前的分配的所有资源
glfwTerminate();
return 0;
}
- glfwCreateWindow
-
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);//开窗
空指针这里的两个参数要打NULL,大写!!!
-
glViewport(0, 0, 800, 600);
glViewport函数前两个参数控制窗口左下角的位置。第三个和第四个参数控制渲染窗口的宽度和高度(像素)。
-
while (!glfwWindowShouldClose(window)) { glfwSwapBuffers(window); glfwPollEvents(); }
- glfwWindowShouldClose函数在我们每次循环的开始前检查一次GLFW是否被要求退出,如果是的话该函数返回
true
然后渲染循环便结束了,之后为我们就可以关闭应用程序了。 - glfwPollEvents函数检查有没有触发什么事件(比如键盘输入、鼠标移动等)、更新窗口状态,并调用对应的回调函数(可以通过回调方法手动设置)。
- glfwSwapBuffers函数会交换颜色缓冲(它是一个储存着GLFW窗口每一个像素颜色值的大缓冲),它在这一迭代中被用来绘制,并且将会作为输出显示在屏幕上。
- glfwWindowShouldClose函数在我们每次循环的开始前检查一次GLFW是否被要求退出,如果是的话该函数返回
运行结果:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探