【OpenGL第一个程序】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、OpenGL第一个程序


前言

本文介绍了OpenGL入门的第一个程序,有详细的注释,便于大家理解其中的逻辑。


一、OpenGL第一个程序

#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;void init(GLFWwindow* window) { }void display(GLFWwindow* window, double currentTime) 
{//! 指定清除背景时用的颜色glClearColor(0.0, 0.0, 1.0, 1.0);glClear(GL_COLOR_BUFFER_BIT);
}int main(void) 
{//! GLFW初始化if (!glfwInit()){exit(EXIT_FAILURE); }//! 指定计算机必须与OpenGL4.3兼容glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//! 创建GLFW窗口和相关的OpenGL上下文//! 指定了窗口的宽和高,单位为像素;窗口的标题;后两个参数为允许全屏显示和资源共享GLFWwindow* window = glfwCreateWindow(600, 600, "Chapter 2 - program 1", NULL, NULL);//! 创建GLFW窗口不会自动将它与当前的OpenGL上下文关联起来,因此需要调用以下函数glfwMakeContextCurrent(window);//! GLEW初始化if (glewInit() != GLEW_OK) { exit(EXIT_FAILURE);}//! 开启垂直同步,因为GLFW窗口默认是双缓冲的//! 双缓冲:有2个颜色缓冲区,一个用于显示,一个用于渲染。渲染整个帧后,将交换缓冲区,缓冲用于减少不良的视觉伪影/*开启垂直同步, 如果它设定为60Hz(60FPS),那么我们就有60FPS。我们可以通过在glfwSwapInterval方法中设置高于1的数字来降低这个速率(如果设置为2,将得到30FPS)。0:关闭垂直同步; 1:60FPS; 2:30FPS。*/glfwSwapInterval(1);init(window);//! 当GLFW探测到应该关闭窗口的事件(比如点击x按钮),循环会终止while (!glfwWindowShouldClose(window)){//! 传入当前时间,保证动画在不同计算机以相同速度播放display(window, glfwGetTime());//! 开启垂直同步,交换缓冲区。/*因为电脑绘图是一个个像素逐一画的,需要时间,如果单一缓冲,我们可能会看到具体绘画过程,会造成屏幕闪烁等问题,而我们用户不需要具体看到你绘制的过程,所以为了解决这个问题,这里用了双缓冲技术,用两个内存区域来保存数据,分为前缓冲区和后缓冲区,前缓冲区用于展示屏幕上的内容,而后缓冲区就用来绘制,然后每一帧开始的时候,将两个缓冲区交换,这样后缓冲区又可以画新的内容。*/glfwSwapBuffers(window);//! 处理窗口相关事件,比如按键glfwPollEvents();}//! 销毁窗口,终止运行glfwDestroyWindow(window);glfwTerminate();exit(EXIT_SUCCESS);
}

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

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

相关文章

加工工件管口倒角在0.00~0.01mm

对于加工工件管口倒角在0.00~0.01mm这样极小尺寸范围内的测量&#xff0c;常规的测量工具和方法可能难以满足精度要求。这种微小倒角的测量通常需要采用高精度的检测技术和设备&#xff0c;以下是一些适用的测量方法&#xff1a;1. 光学干涉仪&#xff1a;利用光波干涉原理&…

cesium绘制区域编辑

npm 安装也是可以的 #默认安装最新的 yarn add cesium#卸载插件 yarn remove cesium#安装指定版本的 yarn add cesium1.96.0#安装指定版本到测试环境 yarn add cesium1.96.0 -D yarn install turf/turf <template><div id"cesiumContainer"></div&…

大学理科生搜题软件?分享四个软件和公众号,来对比看看吧 #笔记#知识分享

在快节奏的大学生活中&#xff0c;合理利用这些日常学习工具&#xff0c;能够让你事半功倍&#xff0c;提高学习效率。 1.福昕翻译 可以一键翻译文档内容&#xff0c;并提供还原排版的译文&#xff0c;对经常看外文文献的朋友来说&#xff0c;绝对是福音 福昕翻译是一流专业…

微信小程序全栈开发实践教程

掌握小程序开发&#xff1a;一站式项目实操指南 课程旨在系统地介绍小程序开发中常用的组件与接口&#xff0c;并强调最佳实践与常见错误的讲解。为确保学习效果&#xff0c;课程将围绕一个大型实战项目展开&#xff0c;该项目综合了小程序开发的关键技术和知识点。通过循序渐…

设计模式基础——设计原则介绍

1.概述 ​ 对于面向对象软件系统的设计而言&#xff0c;如何同时提高一个软件系统的可维护性、可复用性、可拓展性是面向对象设计需要解决的核心问题之一。面向对象设计原则应运而生&#xff0c;这些原则你会在设计模式中找到它们的影子&#xff0c;也是设计模式的基础。往往判…

HTML大雪纷飞

目录 写在前面 HTML简介 完整代码 代码分析 运行结果 系列文章 写在后面 写在前面 小编又又又出现啦&#xff01;这次小编给大家带来大雪纷飞HTML版&#xff0c;不需要任何的环境&#xff0c;只要有一个浏览器&#xff0c;就可以随时随地下一场大雪哦&#xff01; HTM…

Diffusion Model, Stable Diffusion, Stable Diffusion XL 详解

文章目录 Diffusion Model生成模型DDPM概述向前扩散过程前向扩散的逐步过程前向扩散的整体过程 反向去噪过程网络结构训练和推理过程训练过程推理过程优化目标 详细数学推导数学基础向前扩散过程反向去噪过程 Stable Diffusion组成结构运行流程网络结构变分自编码器 (VAE)文本编…

富港银行 邀请码 兑换码 优惠码 分享

首次记得一定要扫码注册&#xff0c;扫码注册开户费50美金&#xff0c;每笔26美金手续费&#xff0c;目前能接收CBI银行资金的有&#xff1a;工行、交通、中行&#xff0c;请知悉 cbi帐户管理费&#xff1a;10美元/月&#xff0c;余额>500美元&#xff0c;1美元/月/&#x…

521源码-免费源码下载-免费网络教程如何在PHP中实现跳转并携带POST数据

PHP是一种流行的服务器端脚本语言&#xff0c;用于构建动态的Web应用程序和网站。在PHP中&#xff0c;经常需要进行页面跳转以及跨页面传输数据。本文将讨论如何在PHP中实现跳转并携带POST数据。 要理解如何在PHP中跳转并携带POST数据&#xff0c;首先需要了解HTTP请求是如何工…

Windows Presentation Foundation(WPF)要点总结

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软推出的一种用于构建Windows桌面应用程序的框架。自从WPF在.NET Framework 3.0中引入以来&#xff0c;它以其强大的功能和灵活性&#xff0c;逐渐成为开发人员构建现代、富用户界面应用程序的首选。本文将概述…

在vue中实现下载文件功能

实际操作为&#xff0c;在表格中 我们可以获取到文件的id&#xff0c;通过插槽就可以实现 <template #default"scope"><el-button type"text" click"handleDown(scope.row)"><span>下载</span></el-button> </…

数组基础-笔记

数组是非常基础的数据结构&#xff0c;实现运用和理解是两回事 数组是存放在连续内存空间上的相同类型的数据的集合 可以方便的通过下表索引的方式获取到下标下对应的数据。 举一个字符数组的例子&#xff1a; 注意两点&#xff1a; 数组下标从0开始 数组内存空间的地址是连…

Python的selenium爬取

1.selenium 1.1.前言 使用python的requests模块还是存在很大的局限性&#xff0c;例如&#xff1a;只发一次请求&#xff1b;针对ajax动态加载的网页则无法获取数据等等问题。特此&#xff0c;本章节将通过selenium模拟浏览器来完成更高级的爬虫抓取任务。 1.2.什么是seleniu…

运维开发详解

运维开发&#xff0c;简单来说&#xff0c;就是维护和优化计算机系统、网络以及软件应用正常运行的工作&#xff0c;同时通过编写代码来自动化这些维护任务&#xff0c;提高效率。想象一下&#xff0c;运维就像是照顾一盆植物&#xff0c;你要浇水、施肥、修剪&#xff0c;保证…

Redhat7.4部署MySQL-5.7.17搭建双主互为主从

一、准备工作 需要先准备已经搭建好的两台数据库&#xff0c;并且保证服务器之间网络是通的&#xff0c;3306端口可以相互访问。 二、修改两台数据库my.cnf 配置文件&#xff0c;将下列内容添加进去&#xff0c;放在 [mysqld] 下 我们暂定两台服务器为A服务和B服务&#xff…

【音视频基础概念】颜色与图像

文章目录 前言一、三原色不同三原色的概念三原色的作用 二、颜色空间颜色空间是什么颜色空间的作用常见颜色空间示例灰度图像是什么灰度图像的作用灰度图像的技术细节示例 总结 前言 在当今数字媒体时代&#xff0c;音视频技术在我们的日常生活中占据了重要位置。无论是观看电…

线代与图形学的暧昧二三事

A Swift and Brutal Introduction to Linear Algebra 计算机图形学依赖于线性代数、微积分、统计...物理方面涉及到光学&#xff08;波动光学&#xff1a;不再假设光是直线传播&#xff0c;作为一种光波与物体表面材质进行作用接触&#xff0c;如何生成不同的外观&#xff09;…

npm build报错Cannot find module ‘webpack‘解决方法

目录 一、问题描述二、问题原因三、解决方法 一、问题描述 npm build 报错&#xff1a; Error: Cannot find module webpackRequire stack:- D:\Workspaces\WebstormProjects\yy-cloud\ruoyi-ui\node_modules\compression-webpack-plugin\dist\index.js- D:\Workspaces\Websto…

Xshell 使用

Xshell 使用 ①xshell 安装包 ②xshell 卸载 ③xshell 同时控制多窗口 ①xshell 安装包 Xshell 7 破解版 ②xshell 卸载 第一步: 打开控制面板卸载xshell 第二步: win+R,输入regedit,打开注册表,删除xshell相关注册信息 注册表目录: 在下面两个目录中查找xshell相关…

STM32硬件接口I2C应用(基于BH1750)

目录 概述 1 STM32Cube控制配置I2C 1.1 I2C参数配置 1.2 使用STM32Cube产生工程 2 HAL库函数介绍 2.1 初始化函数 2.2 写数据函数 2.3 读数据函数 3 光照传感器BH1750 3.1 认识BH1750 3.2 BH1750寄存器 3.3 采集数据流程 4 BH1750驱动实现 4.1 接口函数实现 4.2…