(第一章)OpGL超级宝典学习:配置和超级宝典相同的工作环境

news2025/4/28 15:25:09

目录

  • 前言
  • 配套资源
  • 配置
    • 解压文件夹
    • 复制资源
  • HOWTOBUILD
    • 什么是CMake
    • 什么是GLFW
    • 安装CMake
  • 开始构建
    • build glfw
      • 生成debug和release的lib库
    • build sample
  • 推送
  • 结语

前言

最近发现学习好像到了一定的瓶颈,马上要到2023年了,想要在新的一年开始后对自己有一定的突破,加上想往TA上尝试发展一下,所以想要开始系统的学习OpenGL,遂新开一个专栏专门记录对OpenGL超级宝典,也就是蓝宝书的学习过程,预计第一遍的学习时间在3-5个月,加之过年,希望本专栏能够在来年6月份前能结束第一遍的学习记录,本文根据openGL超级宝典,配置和书中相同的开发环境,并成功的运行官方提供的演示示例

  • 注:学习本专栏需要拥有蓝宝书,电子版和纸质版均可,博主使用的第七版

配套资源

  • 下载地址

https://box.lenovo.com/l/Jonqdf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ouATyLNu-1671767188526)(https://note.youdao.com/yws/res/11766/WEBRESOURCEdcb1942ce176eba1140ebb1eef958c21)]

  • sb7code-master

书中所有讲解的源码,可能和书中存在细微差距,基本相同

  • superbible7-media

示例用到的资源内容,shader、纹理等


配置

解压文件夹

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QORsjWWU-1671767188528)(https://note.youdao.com/yws/res/11778/WEBRESOURCE70549f1e8c7b12037df21a26b91fcce9)]

第一步解压两个文件夹


复制资源

在这里插入图片描述
在这里插入图片描述

将superbible7-media文件下的资源全部拷贝到sb7code-master目录下bin\media文件夹内


HOWTOBUILD

在这里插入图片描述

在源码根目录下有一个HOWTOBUILD文档,该文档描述了如何去构建项目,我们简单看一下

OpenGL SuperBible 7th Edition Examples - How to Build
=====================================================

This source code archive uses CMake to build. The samples also use GLFW library, a
snapshot of which is included in the `extern` folder. It's also possible to use a different
copy of GLFW if desired, but that's an excercise for you. Instructions for each supported
platform are as follows:

开篇介绍了源码使用CMake去构建,并且使用了GLFW库


什么是CMake

  • 百度百科
https://baike.baidu.com/item/cmake/7138032?fr=aladdin

在这里插入图片描述

跨平台编译工具,可以编译源代码,制作程式库


什么是GLFW

  • 官方地址
https://www.glfw.org/

glfw是一个开源的openGL工具程序库

Windows / Microsoft Visual Studio 2013
--------------------------------------

Install CMake. Windows binaries are available from http://www.cmake.org/.
Ensure that CMake is in your path.
Open a command prompt and change to the directory where you've checked out the code.

### Build GLFW

If you are going to use the copy of GLFW included in the archive, enter the
GLFW directory in `extern/glfw-3.0.4`, and type:

    cmake -G "Visual Studio 12" .

(Yes, that's not a mistake - Visual Studio 12 is 2013)

Open the resulting GLFW.sln file in Visual Studio and build both the debug and release configurations.

Copy and rename the resulting glfw3 libraries:

* Copy `glfw-3.0.4/src/Debug/glfw3.lib` into the `lib` directory and **rename it to glfw3_d.lib**.
* Copy `glf3-3.0.4/src/Release/glfw3.lib` into the `lib` directory but don't rename it.

### Build the samples

Open a command prompt and change to the build directory in the source archive.
Type:

    cmake -G "Visual Studio 12" ..

Open the resulting superbible7.sln project in Visual Studio.

The examples will build into the `bin` directory.

这里我们是在windows上去做的测试,所以只看windows上和编译相关的内容即可


安装CMake

  • 官网
https://cmake.org/

在这里插入图片描述
在这里插入图片描述

博主选的版本是3.19.0,下载完成后一路安装,博主选择将CMake添加到环境变量里和创建了桌面图标

在这里插入图片描述

运行GUI后长这个样子


开始构建

build glfw

在这里插入图片描述

  • Browse Source

选择源码下的extern/glfw-3.0.4路径

  • Browse Build

选择源码下的extern/glfw-3.0.4/build路径,没有build文件夹就新建一个就行

依次点击Configure和Generate,生成解决方案


生成debug和release的lib库

  • 打开GLFW.slb

在这里插入图片描述

生成完毕后会在build文件夹生成sln的解决方案,打开GLFW.sln

  • 编译

![在这里插入图片描述](https://img-blog.csdnimg.cn/3d42c477694a43a49588640f33c24be5.png在这里插入图片描述

依次运行编译Debug和Release

  • 查看生成的lib

在这里插入图片描述

在build/src目录下会生成Debug和Release两个文件夹,目录下均有一个glfw3.lib文件

  • 拷贝

在这里插入图片描述

将两个glfw.lib拷贝到sb7code-master\lib目录下,根据HOWTOBUILD的要求,debug的lib重命名成glfw_d.lib


build sample

  • CMake构建

在这里插入图片描述

  • Browse Source

sb7code-master源码路径

  • Browse Build

sb7code-master源码路径下的build文件

和build Glfw类似,设置好source和build,依次点击Configure和Generate,生成解决方案

  • 查看生成的解决方案

在这里插入图片描述

构建完成后会在build文件下生成一大堆的文件,我们主要用的是superbible7.sln文件,这个文件是所有示例的入口文件

  • 编译示例

在这里插入图片描述

点开后直接点击运行,等待编译完成

  • 运行

在这里插入图片描述
在这里插入图片描述

编译完成后,选择右侧的其中一个例子,右键设置为启动项,然后运行,我们可以看到例子已经跑了起来


推送

  • Github
https://github.com/KingSun5

结语

若是觉得博主的文章写的不错,不妨关注一下博主,点赞一下博文,另博主能力有限,若文中有出现什么错误的地方,欢迎各位评论指摘。
本文属于原创文章,转载请著名作者出处并置顶!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kubernetes 实现自动扩容和自愈应用实践

Kubernetes 自动扩容和自愈 tags: 实践 文章目录Kubernetes 自动扩容和自愈1. 背景2. 准备3. kind 部署 kubernetes4.实践4.1 部署 deployment4.2 创建 Service4.3 创建 Ingress4.4 部署 Ingress-nginx4.5 K8s 实现自愈4.6 k8s 实现自动扩容5. 其他1. 背景 在生产非 kubernet…

java进阶—List

上节回顾 List 是一个有序的,允许重复的Collection,其下的子类主要有 ArrayList LinkedList,Vector(这个官方不推荐使用) 那么同为list的子类,ArrayList 跟 LinkedList 有什么区别呢? 这里就涉及到了list的底层两种实现方式&…

《计算机体系结构量化研究方法》第2章-存储器层次结构设计 2.1 引言

一、概述 1、存储器层次结构:层次由速度和容量各不相同的存储器组成。 2、存储器层次结构被分为几个级别——离处理器越近,容量越小速度越快。 3、包含性质:大多数情况下,低层级存储器中的数据是上一级存储器中数据的超集。比如…

基于RSA的数字签名设计与实现

信息安全课程的第二个实验,主要是用java、js,前端页面用的html写的。 页面成果展示: 基本公私钥生成 实验环境为win10系统,使用git命令行工具——git bash生成公私钥。生成私钥,密钥长度为1024bit并从私钥中提取公钥 …

如何在 Spring Boot 项目中开启 “热部署“

目录 1. 添加热部署框架支持 2. 设置当前项目 Settings 和新项目 Settings 开启项目自动编译 3. 开启运行中热部署 4. 使用 Debug 启动项目 (社区版 IDEA) 1. 添加热部署框架支持 在 pom.xml 中添加如下框架引用: <dependency><groupId>org.springframework.b…

vue3中常用的三种组件传值方式

比较大型的项目中经常会涉及到多个组件之间进行传值&#xff0c;所以对之前用过的一些传值方法做个笔记&#xff0c;还有就是对不同的情况下需要使用哪一种传值方法更合适的思维进行一个总结 vue3中常用的三种组件传值方式mitt依赖注入pinia总结mitt 因为vue3去掉了全局事件总…

qt实现的pdf阅读器(二)--XpdfReader在linux下的编译

目录 1.简介 2.需求说明 3.编译 3.3. 下载源码 3.2. 移植安装包和依赖库 3.2.1 准备工作 3.3.2 了解 3.3.3 编译并安装zlib 3.3.4 编译并安装libpng 3.3.5 编译并安装lcms 3.3.6 编译并安装freetype 3.3.7 编译xpdf 3.3.8 查看运行编译好的xpdf 1.简介 Xpdf 是一个免…

我以为自己MySQL够牛逼了,直到看到了Alibaba的面试题

前言 众所周知&#xff0c;简历上“了解&#xff1d;听过名字&#xff1b;熟悉&#xff1d;知道是啥&#xff1b;熟练&#xff1d;用过&#xff1b;精通&#xff1d;做过东西”。 相信大家对于MySQL的索引都不陌生&#xff0c;索引(Index)是帮助MySQL高效获取数据的数据结构。…

SpringBoot Disruptor框架遇到的问题

1.消息重复消费问题 问题描述&#xff1a; 项目中启动了多个消费者,测试中发现同一条消息被多次消费。 解决方案&#xff1a; ①幂等方案处理 ②disrutor提供了不同的处理机制&#xff1a; 自定义消费者实现EventHandler接口,他是属于重复消费&#xff0c; 自定义消费者实现W…

SVN培训笔记(下拉项目、同步修改、添加文件、修改文件、删除文件、改名文件等)

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/128417196 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

【矩阵论】7. 范数理论——非负/正矩阵

7.5 非负/正矩阵 7.5.1 定义 a. 非负/正矩阵定义 一个实矩阵 A(aij)∈RmnA(a_{ij})\in R^{m\times n}A(aij​)∈Rmn 若对每一 iii 和 jjj &#xff0c;aij≥0a_{ij}\ge 0aij​≥0 &#xff0c;则称A是非负矩阵&#xff0c;A≥0A\ge 0A≥0 若对每一 iii 和 jjj &#xff0c;…

简单四则运算语法树可视化

简单四则运算语法树可视化 前几天有一篇博客是关于四则运算和二叉树的&#xff0c;我是把四则运算用二叉树写出来&#xff08;我是用的 JSON 的形式来存储和表达的&#xff09;&#xff0c;并计算最终的结果。最近&#xff0c;也在继续这个方面的东西&#xff0c;不过遇到一些…

uni-app 微信支付-小程序、APP、IOS

小程序 支付 先看官方文档 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_2.shtml 知晓有那些比不可少的流程&#xff0c;之后后端确定返回的参数值&#xff0c;用于前端支付。参数值必须一一对应&#xff0c;不然支付会失败 uni.requestPayment({timeStamp…

mysql5.7主从复制配置

写在最前面&#xff1a;一入编程深似海&#xff0c;从此对象变路人&#xff08;码农没时间谈恋爱&#xff09;。很长一段时间连写个文章的时间都没有了&#xff0c;学完后端、学前端&#xff0c;前端刚入门又要搞容器化&#xff0c;这真是“一重山外一重关&#xff0c;关关难过…

如何在Angular框架中更好地使用字体?一篇文章解答!

作为前端开发人员&#xff0c;在Angular JS中构建项目时&#xff0c;使用自定义字体可能会很棘手。有时候&#xff0c;如果开发者想要把选择的字体添加到项目中&#xff0c;将不得不把它导入到现有的代码中。 PS&#xff1a;Kendo UI致力于新的开发&#xff0c;来满足不断变化…

信息安全产品认证

文章目录一、引言二、《网络关键设备和网络安全专用产品安全认证证书》2.1 背景2.2 产品目录2.3 认证依据标准2.4 认证机构三、《中国国家信息安全产品认证证书》3.1 背景3.2 产品目录3.3 行业跟进四、《IT产品信息安全认证证书》五、CCC认证5.1背景5.2 中国强制性产品认证体系…

多源传感器组合导航 GNSS 视觉SLAM LiDAR INS 开源项目总结

多源传感器组合导航 GNSS 视觉SLAM LiDAR INS 开源项目总结 本文更改自 吴桐wutong 微信公众号文章。 开源代码总览 名称传感器类型组合类型滤波方法备注RTKLIBG-KFGAMP、rtklibexplorerhttps://www.rtklib.com/GPSTKG-KFhttps://github.com/SGL-UT/GPSTkBNCG-KFppp_wizardK…

【多个IP地址用逗号分割开】vue简单实现,textarea文本域输入多个ip地址用逗号分隔开,根据空格分割

前言 这个功能也是很多地方会用到的。 一般使用的地方是比如需要设置白名单或者黑名单 然后页面上会有一个textarea文本域。 在文本域中输入多个ip地址&#xff0c;输入一个回车换一行。 然后点击保存后&#xff0c;把数据通过逗号隔开的格式传给后端 后端再去拿到每一个ip地址…

电脑重装系统win11如何更改默认下载路径

win11如何更改默认下载路径&#xff1f;当大家平日里面&#xff0c;在使用win11系统的时候&#xff0c;如果觉得某一个下载路径的内存空间已经满了的话&#xff0c;那么就必须要及时更改&#xff0c;下面是小编提 供的更改路径的方法。 工具/原料&#xff1a; 系统版本&#x…

ES集群节点角色更换

背景 如何在一个3节点集群中&#xff0c;将Master/Data角色的节点中的数据分散到其他数据节点中&#xff0c;将该节点角色变更为Master 操作步骤 构建集群 集群角色如下 m-01:master/data d-02:data d-03:data 集群配置文件&#xff1a; Master节点elasticsearch.yml配置文件…