OpenGL运行环境的搭建(GLFW+GLAD+OpenGL以及在Vistual Studio中的 配置)

news/2024/7/5 5:19:33

文章目录

  • 整体运行环境框架
  • GLFW
    • 作用
  • 使用CMake编译
    • 配置步骤
    • 编译器如何找到库和头文件的位置?
  • GLAD
    • 使用GLAD的必要性——存储函数位置的操作太繁琐
    • GLAD安装方法

整体运行环境框架

OpenGL是Windows平台在安装VS以后自带的,还需要一下其他的库:
GLFW(窗口和处理用户输入)+GLAD(解决繁琐的检索函数位置问题)+CMake(从源码编译GLFW库)

最后将这些库在VS的项目-属性中进行配置,引入头文件后编译成功即为环境搭建完成。

GLFW

GLFW是用于OpenGL的由C语言编写的库。

下载源码版:GLFW的下载地址

作用

GLFW可以:

  1. 创建OpenGL上下文
  2. 定义窗口参数
  3. 处理用户输入

使用CMake编译

CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。

CMake需要源代码文件夹(这里使用上面下载的glfw文件根目录)和用于存储二进制文件的目标文件夹(新的空文件夹)。

在这里插入图片描述

配置步骤

  1. 选定源文件和目标文件夹,点击Configure按钮。
  2. 选择generator,这里选择Vistual Studio。
  3. 保留默认配置,再点击Configure按钮。
  4. 点击Generate按钮,再build文件夹就会生成项目文件。
  5. 在build文件夹打开GLFW.sln(使用Visual Studio打开,里面已经包含了解决方案的配置),点击build solution选项(生成->生成解决方案)。
  6. 编译好的库文件可以直接在build/src/Debug/glfw3.lib找到。

编译器如何找到库和头文件的位置?

  1. 创建一个文件夹,里面包含Libs和Include两个文件夹,分别存放OpenGL工程用到的所有第三方库和头文件。
  2. 每次新建一个工程时都需要告诉IDE/编译器在哪能找到这些目录:link我们的项目和刚刚编译的库文件——项目-属性按照下图配置。

在这里插入图片描述

  1. 为了编译的时候能链接GLFW库,把GLFW link到project。
  2. 同时由于Windows系统在安装VS后,自带opengl32.lib,可以直接将该库link到project中。

在这里插入图片描述

GLAD

使用GLAD的必要性——存储函数位置的操作太繁琐

OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。为了获得函数的位置,需要将其保存到一个函数指针中来进行使用。

//define the function's prototype
typedef void (*GL_GENBUFFERS)(GLsizei, GLuint*);
//find the function and assign it to a function pointer
GL_GENBUFFERS glGenBuffers = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
//function can now be called as normal
unsigned int buffer;
glGenBuffers(1,&buffer);

上面的声明并查找指针的过程过于繁琐,而GLAD就可以解决这个问题。

GLAD安装方法

进入GLAD的web service,按照下图配置,点击Generate。

在这里插入图片描述

将得到的zip解压后,将Include下的两个文件夹放到刚才创建的Include文件夹中,然后将glad.c文件添加到项目工程中。

在这里插入图片描述

如图所示,编译通过,环境配置成功。


http://lihuaxi.xjx100.cn/news/9660.html

相关文章

观测云产品更新|新增基础设施 YAML 显示;新增日志查看器 DQL 搜索模式;优化应用性能监测等

观测云更新 优化笔记文本组件 Markdown 格式 在场景笔记,文本组件 Markdown 输入框增加工具栏及预览模式,您可以更简单、快速的调整输入的文本格式。 新增基础设施 YAML 显示 在基础设施容器「Pods」、「Deployments」、「Services」查看器&#xff0…

win和linux动静态链接库介绍,以及win下动态库生成和调用方法

目录 参考文献 知识点介绍 linux下动静态库编译简单介绍 win下动静态库使用 win下动态库的生成和隐式链接(静态调用) 参考文献 【基础】动态链接库/静态链接库的区别_叫我东方小巴黎的博客-CSDN博客_动态链接库和静态链接库的区别 Linux动静态库详…

响应式UI组件集DevExtreme v22.1.5,9月全新发布!

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

计算机毕业设计之java+ssm基于个人需求和地域特色的外卖推荐系统

计算机毕业设计之javassm基于个人需求和地域特色的外卖推荐系统 项目介绍 系统权限按管理员,商家和用户这三类涉及用户划分。 (a) 管理员:管理员使用本系统涉到的功能主要有:首页,个人中心,用户管理,商家管理,菜系分类管理,城市管理,系统管理,订单管理等…

csmall-passport(Day14)

1. 使用JWT保存权限 在UserDetailsServiceImpl中,调用的adminMapper.getLoginInfoByUsername()中已经包含用户的权限,则,在返回的UserDetails对象中封装权限信息: UserDetails userDetails User.builder().username(loginAdmin…

Fabric.js 自定义子类,创建属于自己的图形~

theme: smartblue 我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第14篇文章,点击查看活动详情 本文简介 点赞 关注 收藏 学会了 fabric.js 在出厂时就提供了几个基础图形,比如矩形、圆形、三角形等。 但这些图形可能不能满足日常开…

Hive常用语句

创建表 CREATE TABLE if not exists ${database}.ads_dd_s( register_date string COMMENT ‘日期’, order_number string COMMENT ‘流水号’, card_no string COMMENT ‘信用卡号’, rl_bank_acct_no string COMMENT ‘借记卡’, loan_init_prin int COMMENT ‘金额’, loan…

MySQL创建存储过程,事件定时执行

MySQL创建存储过程,事件定时执行 创建存储过程 Procedure格式 CREATE[DEFINER { user | CURRENT_USER }]PROCEDURE procedure_name([[IN |OUT |INOUT ] 参数名 数据类形...]) BEGIN[characteristic ...] routine_body END [end_label]IN 输入参数:调用…