C++ OpenGL学习笔记(1、Hello World空窗口程序)

终于抽出时间系统学习OpenGL 教程,同时也一步一步记录怎样利用openGL进行加速计算。

目录

    • 1、环境准备
      • 1.1、库的下载
      • 1.2、库的选择及安装
    • 2、OpenGL第一个项目,Hello World!
      • 2.1、新建hello world控制台项目
      • 2.2、配置openGL环境
        • 2.2.1 包含目录配置
        • 2.2.2 库目录配置
        • 2.2.3 库文件配置
        • 2.2.4 glad.c文件包含
      • 2.3、Hello World主程序代码

1、环境准备

1.1、库的下载

需下载glfw库、glad库
1、glfw库:官方下载地址

在这里插入图片描述

2、glad库:官方下载地址

访问官网后,根据下图配置下载的版本等信息,点击右下角的按钮进入下载界面

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

在下载界面,下载压缩包即可,如下图
在这里插入图片描述
这里我也提供一下云盘下载地址,方便学习使用

通过网盘分享的文件:openGL_Lib
链接: https://pan.baidu.com/s/13Piu-gvnDoBylxkjZ5buJQ?pwd=6pk1 提取码: 6pk1 
--来自百度网盘超级会员v5的分享

1.2、库的选择及安装

1、glad.zip文件解压后如下图
在这里插入图片描述
看看文件树如下图,里面没有lib文件,都是源码文件。所以glad.c文件后续跟着工程项目进行加载即可。
在这里插入图片描述
2、glfw-3.4.bin.WIN64.zip解压后如下,工程中重点使用include文件夹和下面各个VS库即可
在这里插入图片描述

我用的是VS2017,lib-vc2017文件夹如下,是个动态库
在这里插入图片描述

2、OpenGL第一个项目,Hello World!

2.1、新建hello world控制台项目

在这里插入图片描述

2.2、配置openGL环境

2.2.1 包含目录配置

在这里插入图片描述

2.2.2 库目录配置

在这里插入图片描述

2.2.3 库文件配置

在这里插入图片描述

2.2.4 glad.c文件包含

把glad.zip解压的src中的glad.c文件拷贝到项目main.cpp同级目录,并且添加进工程里

2.3、Hello World主程序代码

主程序main.cpp文件代码修改如下,一个空的openGL窗口即可弹出

#include <glad/glad.h>
#include "GLFW/glfw3.h"
#include <iostream>

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

void processInput(GLFWwindow *window)
{//检测是否有外部输入

	if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
	{
		glfwSetWindowShouldClose(window, true);//把关闭状态设置为true

	}
}


int main()
{
	glfwInit();//初始化上下文环境
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);//要求opengl 3版本以上
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
	glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);//

	GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL Core", NULL, NULL);//创建窗体
	if (window == NULL)
	{
		std::cout << "Failed to create GLFW window" << std::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))//创建的window关掉后就退出while循环
	{
		processInput(window);//
		glClearColor(0.2f,0.3f,0.3f,1.0f);//设置颜色
		glClear(GL_COLOR_BUFFER_BIT);//用设置的颜色把画布进行清零掉


		glfwSwapBuffers(window);
		glfwPollEvents();
	}
	glfwTerminate();
    std::cout << "Hello World!\n";
	return 0;
}


运行后如下空窗口弹出,本篇完结。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL复制问题和解决

目录 环境介绍 一&#xff0c;主库执行delete&#xff0c;从库没有该数据 模拟故障 修复故障 二&#xff0c;主库执行insert&#xff0c;从库已存在该数据 模拟故障 故障恢复 三&#xff0c;主库执行update&#xff0c;从库没有该数据 模拟故障 故障恢复 四&#xf…

AWTK 在树莓派 pico 上的移植笔记

1. 配置文件 (awtk_config.h) pico 和 stm32f103 的配置差不多&#xff0c;虽然 pico 的内存要大不少&#xff0c;但是也不足提供一个完整的 FrameBuffer&#xff0c;所以只能使用片段 LCD。 我们在 awtk-stm32f103 的配置 基础稍作修改即可。 /* 使用片段 LCD */#define FRA…

构建MacOS应用小白教程(打包 签名 公证 上架)

打包 在package.json中&#xff0c;dependencies会被打进 Electron 应用的包里&#xff0c;而devDependencies则不会&#xff0c;所以必要的依赖需要放到dependencies中。files中定义自己需要被打进 Electron 包里的文件。以下是一个完整的 mac electron-builder的配置文件。 …

flink sink doris

接上文&#xff1a;一文说清flink从编码到部署上线 网上关于flink sink drois的例子较多&#xff0c;大部分不太全面&#xff0c;故本文详细说明&#xff0c;且提供完整代码。 1.添加依赖 <!--doris cdc--><!-- 参考&#xff1a;"https://doris.apache.org/zh-C…

GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录

文章目录 论文背景Spectre-PHT&#xff08;Transient Execution &#xff09;Concurrency BugsSRC/SCUAF和实验条件 流程Creating an Unbounded UAF WindowCrafting Speculative Race ConditionsExploiting Speculative Race Conditions poc修复flush and reload 论文 https:/…

【STM32 Modbus编程】-作为主设备写入多个线圈和寄存器

作为主设备写入多个线圈和寄存器 文章目录 作为主设备写入多个线圈和寄存器1、硬件准备与连接1.1 RS485模块介绍1.2 硬件配置与接线1.3 软件准备2、写入多个线圈2.1 数据格式2.2 发送数据2.3 结果3、写入多个寄存器3.1 数据格式3.2 发送数据3.3 结果本文将实现STM32作为ModBus主…

国标GB28181协议平台Liveweb:搭建建筑工地无线视频联网监控系统方案

随着科技高速发展&#xff0c;视频信号经过数字压缩&#xff0c;通过互联网宽带或者移动4G网络传递&#xff0c;可实现远程视频监控功能。将这一功能运用于施工现场安全管理&#xff0c;势必会大大提高管理效率&#xff0c;提升监管层次。而这些&#xff0c;通过Liveweb监控系统…

AS-REP Roasting离线爆破攻击

针对一个域内用户&#xff0c;其账户选项有个设置叫作 “不要求 kerberos 预身份验证”&#xff0c;它默认是关闭的。 当 “不要求 kerberos 预身份验证” 选项被勾选&#xff0c;会出现以下效果&#xff1a; as-req 报文中不需要添加用户 hash 加密的时间戳&#xff0c;自动返…

python中的局部变量、全局变量问题的思考(对比于c语言)

今天在运行python时遇到了局部变量和全局变量的问题&#xff0c;令我很迷惑。 首先&#xff0c;我在学习python之前先学习了c语言&#xff0c;所以c语言的一些东西影响了我对这个问题的思考。 在c语言中 局部变量和全局变量的区别就在于作用域的范围大小。在c语言中&#xf…

进网许可认证、交换路由设备检测项目更新25年1月起

实施时间 2025年1月1日起实施 涉及设备范围 核心路由器、边缘路由器、以太网交换机、三层交换机、宽带网络接入服务器&#xff08;BNAS&#xff09; 新增检测依据 GBT41266-2022网络关键设备安全检测方法交换机设备 GBT41267-2022网络关键设备安全技术要求交换机设备 GB/…

文件,IO流

目录 一 java 1. IO流 1&#xff09;输入输出&#xff08;以程序的视角判断 &#xff09; 1.1 IO流的分类 1&#xff09;字符流效率高于字节流 1.2 流和文件的关系 2. inputstream--字节输入流 2.1 fileinputstream 2.1.1常用方法&#xff1a; 1&#xff09;单个字符…

pymssql-2.1.4.dev5-cp37-cp37m-win_amd64.whl 安装

pip install pymssql 安装pymssql出现下面的问题 error: Microsoft Visual C 14.0 is required. Get it with “Microsoft Visual C Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools 因为要使用python连接sqlserver数据库&#xff0c;需要pymssq…

vue中验证码的实现方式

在写登录页的时候有的系统会让你也进行一下验证码绘制&#xff0c;那么验证码如何实现的呢&#xff1f;我在写登录页的时候通过将登录框&#xff0c;验证码分开页面来写&#xff0c;最后将它们变成标签来导入到我的样式页面中&#xff0c;这样写不仅方便&#xff0c;更容易修改…

致远互联OA使用问题及解决方法记录(个人)

1、更换设备登录账号出现绑定要求 解决&#xff1a;后台管理员账号——M3安全管理——安全设置——删除绑定 2、审批消息错误回退 解决&#xff1a;协同工作——一已办事项——取回——重新审批/流程监督里撤回/流程索道节点回退 3、签章图片在表单上显示过大 解决&#x…

《计算机组成及汇编语言原理》阅读笔记:p9-p27

《计算机组成及汇编语言原理》学习第 2 天&#xff0c;p9-p27 总结&#xff0c;总计 19 页。 一、技术总结 1.quantum physics(量子物理学) (1)quantum(量子) quantum的本意是&#xff1a;c. the smallest amount of sth(量子)。 In physics, a quantum is the minimum am…

java_章节作业

第1题 package com.hspedu.homework;/*** author:寰愬悏瓒&#xfffd;* date:2024/12/19 version:1.0*/ public class Homework01 {public static void main(String[] args) {//初始化Person对象数组&#xff0c;有3个Person对象&#xff1b;Person[] persons new Person[3];…

Audiocraft智能音频和音乐生成工具部署及使用

1、概述 Facebook开源了一款名为AudioCraft的AI音频和音乐生成工具。 该工具可以直接从文本描述和参考音乐生成高质量的音频和音乐。AudioCraft包含MusicGen、AudioGen和EnCodec三个模型&#xff0c;分别实现音乐生成、音频生成和自定义音频模型构建。 2、项目地址 https://…

华为云计算HCIE笔记02

第二章&#xff1a;华为云Stack规划设计 交付总流程 准备工作&#xff1a;了解客户的基本现场&#xff0c;并且对客户的需求有基本的认知。 HLD方案BOQ报价设备采购和设备上架 2.安装部署流程 硬件架构设计 硬件设备选配 设备上架与初始化配置 准备相关资料&#xff08;自动下载…

StarRocks:存算一体模式部署

目录 一、StarRocks 简介 二、StarRocks 架构 2.1 存算一体 2.2 存算分离 三、前期准备 3.1前提条件 3.2 集群规划 3.3 配置环境 3.4 准备部署文件 四、手动部署 4.1 部署FE节点 4.2 部署BE节点 4.3 部署CN节点&#xff08;可选&#xff09; 4.4 FE高可用…

红米Note 9 Pro5G刷小米官方系统

前言 刷机有2种方式&#xff1a;线刷 和 卡刷。 线刷 线刷&#xff1a;需要用电脑刷机工具&#xff0c;例如&#xff1a;XiaoMiFlash.exe&#xff0c;通过电脑和数据线对设备进行刷机。 适用场景&#xff1a; 系统损坏无法开机。恢复官方出厂固件。刷机失败导致软砖、硬砖的…