• 友链

  • 首页

  • 文章归档
h u a n b l o g
h u a n b l o g

欢

HI,Friend

04月
28
其他
Shader

OpenGL环境搭建(GLAD版)

发表于 2024-04-28 • 字数统计 6656 • 被 201 人看爆

什么是OpneGL

Open Graphics Library (OpenGL) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve hardware-accelerated rendering.

总的来说,OpenGL 就是一个应用程序接口(API),用来帮助我们与GPU交互,来使用硬件加速渲染图形。OpenGL只是一个规范,不同的显卡厂商有不同的实现,但这无关紧要,只要用起来相同就行了。值得一提的是,OpenGL 是无需下载的,系统里已经有这个库了(opengl32.lib, opengl64.lib for Windows)。建议将显卡驱动更新到最新

但是,只有 OpenGL 是不够的,原因大致有二:

  • 1.OpenGL 本身提供的 API 比较底层,不便于使用,我们需要一个更高层次的封装。
  • 2.OpenGL 并没有提供创建 context,管理窗口以及处理用户输入等机制。

安装库

需要安装:GLFW、GLEW/GLAD
GLEW和GLAD都是一样的库,下载其中一个即可

GLFW

是专门针对OpenGL的C语言库,GLFW是一个专门用于处理窗口创建和事件循环的库,它能够兼容各种操作系统,提供了一个简单的API来处理窗口相关的操作,如创建、销毁、调整大小等。GLFW负责创建窗口、处理窗口相关的事件(如键盘和鼠标输入),并提供一个OpenGL上下文供程序使用。

GLFW官网地址

GLEW

全称OpenGL Extension Wrangler Library,是一个用于管理OpenGL扩展功能的库。由于OpenGL只有函数声明而没有实现,所以不同的显卡生产商会提供自己的实现。这就需要在编写程序时判断哪些函数是否可用,非常麻烦。而GLEW库则将这些问题简化,使得各个版本的OpenGL函数像原生函数一样可以直接调用。

GLEW官网地址

GLAD

glad是glew的升级版,专门加载OpenGL的函数指针,也可以只安装glad,无需配置glew

GLAD官网地址

其他库

OpenGL搭建_1

下载

GLEW

步骤一:选择官网的Binaries下载
OpenGL搭建_25
步骤二:跳转后,等待即可下载
OpenGL搭建_26

GLFW

步骤一: 选择官网的Download页面,主页是源码,需要自己编译
OpenGL搭建_2

步骤二: 选择对应平台: 这里选择Windows平台,选择32位(64位可能有些平台不支持)
OpenGL搭建_3

步骤三: 将下载的文件解压,可看到对应版本的
OpenGL搭建_4

GLAD

步骤一: 在官网选择对应的信息用来生成库, 最后选择右下角的Generate按钮生成库文件
OpenGL搭建_5

步骤二: 点击Generate后可以查看生成的库文件, 选择glad.zip进行下载
OpenGL搭建_6

步骤三: 将下载的文件解压,可看到和官网生成的库文件一致
OpenGL搭建_7

到这里OpenGL所需要的库就下载好了

配置

这里以Visual Studio2017为例,Visual Studio都差不多,其他编译器没试过,主要是将OpenGL库链接到项目中,可以分开链接(GLFW和GLAD);也可以专门一个文件夹将GLFW和GLAD的include、lib放一起(这里以该方式)

步骤一

将GLFW和GLAD下载的文件放置到同一个文件夹下
GLFW文件:include文件->GLFW文件
OpenGL搭建_8.png

GLAD文件: include文件->glad文件和KHR文件
OpenGL搭建_9.png

也可以把文件里的头文件都提取出来,不用单独一个文件,只不过头文件引入多个文件名,取决于个人的习惯

#include <glad\glad.h>   //这个是单独的文件夹
#include <GLFW\glfw3.h>

#include <glad.h>   //这个是所有的头文件放置在一起
#include <glfw3.h>

步骤二

将lib库也和上面一样,GLAD没有lib库,所以不用分类,直接lib文件即可
GLFW文件:选择对应的版本(这里是Visual Studio2017)->lib文件
OpenGL搭建_10.png

配置好的文件
OpenGL搭建_11.png

步骤三:

将库文件链接到Visual Studio项目中

步骤一

创建一个C++空项目,控制台项目即可

步骤三

将OpenGL头文件链接到项目里,即项目里的GLFW文件

链接头文件:项目->属性->C/C++->常规->附加包含目录(记的上面的平台是: 活动(Win32))->在附加包含目录里面添加文件地址(可直接复制地址,也可选择文件夹)->点确定,应用。
链接lib库:项目->属性->链接器->常规->附加库目录->选择配置的lib文件->点确定,应用。
添加库依赖项:项目->属性->链接器->输入->opengl32.lib glfw3.lib->点确定,应用。

到这所有库以链接完毕,开始测试OpenGL代码

OpenGL搭建_12.png

链接头文件
OpenGL搭建_13.png
OpenGL搭建_14.png
OpenGL搭建_15.png

链接lib库
OpenGL搭建_16.png
OpenGL搭建_17.png

添加库依赖项
OpenGL搭建_18.png
OpenGL搭建_19.png

步骤四

输入OpenGL代码,生成窗口

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;

void framebuffer_size_callback(GLFWwindow* window, int width, int height);

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, "LearnOpenGL", NULL, NULL);
	if (window == NULL) {
		cout << "Failed to create GLFW window" << 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);

	glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

	while (!glfwWindowShouldClose(window)) {
		glfwSwapBuffers(window);
		glfwPollEvents();
	}

	glfwTerminate();
	return 0;
}

void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
	glViewport(0, 0, width, height);
}

生成解决方案错误
OpenGL搭建_20.png

解决办法:将下载的glad文件->src->glad.c导入到项目的源文件夹(用vs导入,直接放到文件夹不会识别)

OpenGL搭建_21.png
OpenGL搭建_22.png
OpenGL搭建_23.png

重新生成解决方案即可

运行

生成两个窗口:控制台窗口和OpenGL窗口,代表完成OpenGL环境配置了
OpenGL搭建_24.png

参考

  • 麋鹿迷路了吗?-OpenGL之gult/freeglut/glew/glfw/glad的联系与区别
  • 雪流星-OpenGL 开发环境配置 Visual Studio + GLFW + GLAD
  • 知乎用户GZJgOP-Visual Studio 2019 配置 OpenGL
  • 埃卡洛斯-openGl新手入门学习笔记(二)下载glew,配置glew的环境与glew的初始化
分享到:
使用premake生成lib库
OpenGL环境搭建(GLEW版)
  • 文章目录
  • 站点概览
欢

网红 欢

你能抓到我么?

Email RSS
看爆 Top5
  • mac系统版本与Xcode版本有冲突 4,079次看爆
  • JAVA_HOME环境配置问题 3,729次看爆
  • AssetBundle使用 3,499次看爆
  • VSCode配置C++开发环境 3,256次看爆
  • Lua反射 3,133次看爆

Copyright © 2025 欢 粤ICP备2020105803号-1

由 Halo 强力驱动 · Theme by Sagiri · 站点地图