非vip版opengl
- 环境搭建
- 安装编译器和构建工具:在 Windows 上可以使用 Visual Studio,在 Linux 上可以使用 GCC 等编译器。确保编译器已正确安装并配置好环境变量。
- 安装 OpenGL 库和相关辅助库(以 GLUT 为例):
- Windows:
- 下载并安装 GLUT 库。可以从互联网上找到适合 Windows 的 GLUT 库文件(如 freeglut),将其解压后,把相关的头文件(通常在
include
文件夹)路径添加到编译器的包含目录中,库文件(通常在lib
文件夹)路径添加到库目录中。同时,在链接器设置中添加对应的库文件名(如freeglut.lib
)。
- 下载并安装 GLUT 库。可以从互联网上找到适合 Windows 的 GLUT 库文件(如 freeglut),将其解压后,把相关的头文件(通常在
- Linux:
- 通过包管理器安装 OpenGL 相关库,例如在 Ubuntu 系统中,在终端中运行
sudo apt - get install freeglut3 - dev
。
- 通过包管理器安装 OpenGL 相关库,例如在 Ubuntu 系统中,在终端中运行
- Mac:
- Mac 系统自带 OpenGL 框架,对于 GLUT,可以使用
brew install freeglut
(如果已经安装了 Homebrew 包管理器)来安装。
- Mac 系统自带 OpenGL 框架,对于 GLUT,可以使用
- Windows:
- 基本代码结构
- 包含头文件:
- 在 C++ 代码中,首先要包含 OpenGL 和 GLUT 相关的头文件。
- 初始化函数
init
:
- 包含头文件:
- 用于设置 OpenGL 的初始状态,如清除颜色、启用深度测试等。
- 显示回调函数
display
:- 这个函数是 OpenGL 的核心部分,用于绘制图形。每当需要重新绘制窗口内容时(例如窗口大小改变、窗口被遮挡后重新显示等情况),这个函数就会被调用。
- 主函数
main
:- 用于初始化 GLUT 库,设置显示模式、窗口大小、创建窗口,并且注册回调函数(如
display
函数),最后进入主循环。
- 用于初始化 GLUT 库,设置显示模式、窗口大小、创建窗口,并且注册回调函数(如
- 图形绘制基础
- 基本图形绘制:
- 使用
glBegin
和glEnd
函数来定义一组几何图元(如点、线、三角形等)。例如,绘制一个简单的点:
- 使用
- 基本图形绘制:
- 其中
GL_POINTS
表示绘制点,glVertex3f
用于指定点的坐标。还可以绘制线(GL_LINES
)、三角形(GL_TRIANGLES
)、四边形(GL_QUADS
)等。 - 颜色设置:
- 使用
glColor3f
函数来设置颜色,它接受三个参数,分别代表红、绿、蓝(RGB)颜色通道的值,范围是 0.0f 到 1.0f。例如,glColor3f(1.0f, 0.0f, 0.0f)
表示设置为红色。
- 使用
- 坐标系统和变换:
- OpenGL 有自己的坐标系统,默认的坐标范围是从 - 1 到 1。可以使用
glTranslatef
函数进行平移,glRotatef
函数进行旋转,glScalef
函数进行缩放等操作来改变图形在三维空间中的位置、方向和大小。
- OpenGL 有自己的坐标系统,默认的坐标范围是从 - 1 到 1。可以使用
- 交互和事件处理
- 键盘事件处理:
- 通过注册键盘回调函数来处理键盘事件。
- 键盘事件处理:
- 然后在
main
函数中使用glutKeyboardFunc(keyboard)
来注册这个函数。 - 鼠标事件处理:
- 类似地,可以注册鼠标回调函数来处理鼠标的点击、移动等事件。例如,处理鼠标点击事件:
- 并在
main
函数中使用glutMouseFunc(mouse)
来注册这个函数。
- 高级主题(纹理、光照等)
- 纹理映射:
- 纹理映射可以使图形表面具有更真实的外观。首先要加载纹理图像,然后将纹理坐标与图形顶点坐标相关联。
- 纹理映射:
- 光照效果:
- OpenGL 可以模拟光照效果,包括环境光、漫反射光、镜面反射光等。首先要设置光照参数,如光源位置、光的颜色等,然后设置物体的材质属性。例如:
- 并且要启用光照(
glEnable(GL_LIGHTING)
)和相应的光源(glEnable(GL_LIGHT0)
等)。这些高级主题需要更深入的学习和实践来掌握。
相关文章:
非vip版opengl
环境搭建 安装编译器和构建工具:在 Windows 上可以使用 Visual Studio,在 Linux 上可以使用 GCC 等编译器。确保编译器已正确安装并配置好环境变量。安装 OpenGL 库和相关辅助库(以 GLUT 为例): Windows: 下…...
【深入理解Nginx】
深入理解Nginx 介绍 Nginx(发音为 “engine-x”)是一款高性能的HTTP服务器和反向代理服务器,同时支持IMAP/POP3协议。它以其高并发处理能力、稳定性、丰富的功能集、简单的配置和低资源消耗而受到广泛欢迎。Nginx特别适合提供静态文件服务、…...
番外篇 | Hyper-YOLO:超图计算与YOLO架构相结合成为目标检测新的SOTA !
前言:Hello大家好,我是小哥谈。Hyper-YOLO,该方法融合了超图计算以捕捉视觉特征之间复杂的高阶关联。传统的YOLO模型虽然功能强大,但其颈部设计存在局限性,限制了跨层特征的融合以及高阶特征关系的利用。Hyper-YOLO在骨干和颈部的联合增强下,成为一个突破性的架构。在COC…...
Microi吾码|开源低代码.NET、VUE低代码项目,表单引擎介绍
Microi吾码|开源低代码.NET、VUE低代码项目,表单引擎介绍 一、摘要二、Microi吾码介绍2.1 功能介绍2.2 团队介绍2.3 上线项目案例 三、Microi吾码表单引擎是什么?四、Microi吾码表单引擎功能4.1 模块引擎 - 由表单引擎驱动4.2 流程引擎 - 由表…...
css常用属性有哪些
在上篇文章我们知道了利用css选择器来对HTML进行简单装饰,就像做word文档一样,需要对哪一段落修改格式,就需要先选中,css选择器就是这意思。这格式如何修改,怎么放大字体,怎么加粗,怎么修改背景…...
Java设计模式 —— 【结构型模式】装饰者模式详解
文章目录 前言结构说明案例演示小结静态代理和装饰者的区别 前言 在日常生活中,我们常会遇到一种场景:去快餐店吃饭,里面琳琅满目的主食,还有各式各样的配菜作为消费者,只管挑选就行,但是如果让我们来设计…...
简道云与金蝶云星空无缝集成的技术探索
简道云数据集成到金蝶云星空的技术案例分享 在企业信息化建设中,数据的高效流动和准确对接是关键环节。本文将聚焦于一个实际运行的系统对接集成案例:简道云-其他入库单--->金蝶-其他入库单,通过轻易云数据集成平台实现这一目标。 案例背…...
单片机原理及应用笔记:单片机中断系统原理与项目实践
高金鹏:男,银川科技学院计算机与人工智能学院,2022级别计算机科学与技术本科生,单片机原理及应用课程第六组。 指导教师:王兴泽 电子邮件:高金鹏3535558665qq.com 个人CSDN:暴躁的海绵宝宝 暴躁的海绵宝…...
uniapp使用百度地图配置了key,但是显示Map key not configured
搞了我两天的一个问题。 hbuilderx版本:4.36 问题介绍: 我的项目是公司的项目,需要在H5端使用百度地图,使用vue-cli创建的uniapp,就是uni代码在src里的目录结构。就是使用这种方式才会遇到这个问题。 问题原因…...
CTFHub ssrf
第一关(内网访问) 尝试访问位于127.0.0.1的flag.php吧 第二关(伪协议读取文件) 尝试去读取一下Web目录下的flag.php吧 1.首先尝试http://127.0.0.1/flag.php 2.查看页面源代码 3.根据提示输入file:///var/www/html/flag.php 4.查看页面源代码 第三关&…...
字符串哈希
1. LC 3292 形成目标字符串需要的最少字符串数Ⅱ 这题在3291的基础上开大数据量了。 3291我是比较标准的dp字典树优化匹配。先把所有word扔到字典树里面,定义dp[i]表示到target[i]需要的最少次数。对于每个i进行target子串的最长前缀匹配,随后向后刷表…...
ensp 静态路由配置
A公司有广州总部、重庆分部和深圳分部3个办公地点,各分部与总部之间使用路由器互联。广州、重庆、深圳的路由器分别为R1、R2、R3,为路由器配置静态路由,使所有计算机能够互相访问,实训拓扑图如图所示 绘制拓扑图 给pc机配置ip地址…...
Android Room 数据库使用详解
一、Room介绍 Android Room 是 Google 提供的一个 Android 数据持久化库,是 Android Jetpack 组成部分之一。它提供了一个抽象层,使得 SQLite 数据库的使用更为便捷。通过 Room,开发者可以轻松地操作数据库,不需要直接编写繁琐的…...
Ubuntu安装或卸载mariadb-server软件包
1、安装mariadb-server sudo apt install mariadb-server 检查MariaDB服务器的服务状态 service mariadb status 仅需要卸载MariaDB,而不是删除所有MariaDB相关软件包 sudo apt-get remove mariadb-server 2、卸载MariaDB 从系统中完全删除MariaDB数据库…...
canal详解及demo
提示:如何保证Redis中的数据与数据库中的数据一致性?数据同步canal的介绍和demo、大型企业如何实现mysql到redis的同步?使用binlog实时更新redis缓存、canal的接入教程、win下canal的服务器端、canal客户端的创建、连接、测试教程、数据同步方…...
SQL语句
SQL(Structured Query Language,结构化查询语言)是用于管理和操作关系数据库系统的标准编程语言。它允许用户执行数据的定义、查询、更新和管理等操作。以下是一些常见的SQL语句及其简要说明: 数据定义语言(DDL&#…...
中间件 redis安装
redis官网地址:Redis - The Real-time Data Platform 环境 CentOS Linux release 7.9.2009 (Core) java version "17.0.12" 2024-07-16 LTS 1、通过压缩包安装redis 1,远程下载redis压缩包,或去官网下载:Downloads …...
设计模式12:抽象工厂模式
系列总链接:《大话设计模式》学习记录_net 大话设计-CSDN博客 参考: C设计模式:抽象工厂模式(风格切换案例)_c 抽象工厂-CSDN博客 1.概念 抽象工厂模式(Abstract Factory Pattern)是软件设计…...
学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式
学习笔记:从ncsi/nc-si协议和代码了解网络协议的设计范式 参考文档: https://www.dmtf.org/standards/published_documents https://www.dmtf.org/dsp/DSP0222 https://www.dmtf.org/sites/default/files/standards/documents/DSP0222_1.2.0.pdf参考代…...
基础库urllib的使用
学习爬虫,其基本的操作便是模拟浏览器向服务器发出请求,那么我们需要从哪个地方做起呢?请求需要我们自己构造吗?我们需要关心请求这个数据结构怎么实现吗?需要了解 HTTP、TCP、IP层的网络传输通信吗?需要知道服务器如何响应以及响应的原理吗? 可能…...
SSM 电脑配件销售系统设计要点与 JSP 实现难点攻克
摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于电脑配件销售系统当然也不能排除在外,随着网络技术的不断成熟,带动了电脑配件销售系统,它彻底改变了过…...
AI前沿分析:ChatGPT搜索上线,Google搜索地位能否守住?
名人说:莫听穿林打叶声,何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 引言:AI与搜索领域的激烈博弈一、ChatGPT搜索的优势是什么?1. 实时信息获取:超越传统搜索2. 对话式搜索:重构用户体验3. 个性化推荐:深度挖掘用户需求二、G…...
单片机:实现utf-8转gb2312(附带源码)
单片机实现UTF-8转GB2312 在嵌入式系统中,字符编码是常见的问题之一,尤其是在显示中文字符时。UTF-8和GB2312都是常见的字符编码标准,UTF-8广泛用于Web和现代操作系统中,而GB2312是中国大陆常用的中文字符集。在一些嵌入式系统中…...
VMProtect:软件保护与安全的全面解决方案
在当今数字化时代,软件的安全性和保密性愈发重要。VMProtect 作为一款备受瞩目的软件保护工具,因其强大的功能和广泛的应用而成为开发者保护软件的首选方案。 VMProtect 是一款新一代的软件保护实用程序,支持多个编译器平台,包括…...
linux下观察进程捕获信号的情况
linux观察进程收到信号的情况,信号可以来自外部进程、进程自身、内核定时器等。 观察捕获信号方法一:strace strace所有信号: strace -e signal -f -p $pid 过滤出某个信号: #grep 信号名,取自kill -l strace -e …...
VSCode编辑+GCC for ARM交叉编译工具链+CMake构建+OpenOCD调试(基于STM32的标准库/HAL库)
一、CMake安装 进入CMake官网的下载地址Get the Software,根据系统安装对应的Binary distributions。 或者在CMake——国内镜像获取二进制镜像安装包。 或者访问GitHub的xPack项目xPack CMake v3.28.6-1,下载即可。 记得添加用户/系统的环境变量&#…...
概率论得学习和整理26:EXCEL 关于plot 折线图--频度折线图的一些细节
目录 0 折线图有很多 1 频度折线图 1.1 直接用原始数据做的频度折线图 2 将原始数据生成数据透视表 3 这样可以做出了,频度plot 4 做按某字段汇总,成为累计plot分布 5 修改上面显示效果,做成百分比累计plot频度分布 0 折线图有很多 这…...
数据结构之栈和队列算法题
一:有效括号数 学了栈之后这一题就比较简单了。 思路:1、左括号进栈 2、右括号出栈匹配。 完整代码: 因为使用C语言写的,所以里面包含了栈的实现 #include<stdio.h> #include<stdlib.h> #include<assert.h>…...
离散数学---随机漫步
本文根据 MIT 计算机科学离散数学课程整理(Lecture 25)。 赌徒破产问题(Gamblers Ruin) 问题描述 初始为 n 元,对于每一次独立的赌注,都有 p 的概率赢得 1 元,(1-p) 的概率输掉 1 元。当输完…...
HCIA-Access V2.5_2_2网络通信基础_TCP/IP协议栈报文封装
TCP/IP协议栈的封装过程 用户从应用层发出数据先会交给传输层,传输层会添加TCP或者UDP头部,然后交给网络层,网络层会添加IP头部,然后交给数据链路层,数据链路层会添加以太网头部和以太网尾部,最后变成01这样…...
java开发入门学习一 -基本概念入门
目录 Java的开发环境搭建 开发环境简单认识 开发环境下载与安装 初始JAVA之helloWorld java基本运行原理 helloWord实例 JAVA文档注释和API 文档 注释 API文档地址 Java的优缺点 优点 缺点 JVM的简单介绍 功能 1. 实现JAVA程序的跨平台性 2. 自动内存管理(管理…...
Coturn 实战指南:WebRTC 中的 NAT 穿透利器
1. 什么是 Coturn? Coturn 是一种开源的 TURN(Traversal Using Relays around NAT)服务器,用于解决 NAT 穿透问题。它帮助客户端在受限网络环境(例如防火墙或 NAT 后面)中实现双向通信,常用于 WebRTC 应用、VoIP、在线游戏等场景。 2. Cotur…...
【每日一练 基础题】[蓝桥杯 2022 省 A] 求和
[蓝桥杯 2022 省 A] 求和 暴力破解会超时,用因式分解的平方差公式 a2 2abb2(a)2 a-2abb2(a-b)2 输出整数((a1a2a3…an)-a1-a2-a3-…-an)/2 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);l…...
华为ensp--BGP路径选择-Preferred Value
学习新思想,争做新青年。今天学习的是BGP路径选择-Preferred Value 实验目的 理解BGP路由信息首选值(Preferred Value)的作用 掌握修改Preferred Value属性的方法 掌握通过修改Preferred Value属性来实现流量分担的方法 实验拓扑 实验要求…...
Flink是什么?Flink技术介绍
官方参考资料:Apache Flink — Stateful Computations over Data Streams | Apache Flink Flink是一个分布式流处理和批处理计算框架,具有高性能、容错性和灵活性。以下是关于Flink技术的详细介绍: 一、Flink概述 定义:Fli…...
Java中的重要集合
目录 List 1.vector 2.ArrayList 3.CopyonWriteArraylist 4.ArrayList变成线程安全的方式 5.LinkList Map 1.HashTable 2.HashMap 3.ConcurrentHashMap Set 1.LinkedHashSe List 1.vector Vector 是线程安全的动态数组,其内部方法基本都经过synchroni…...
实景视频与模型叠加融合?
[视频GIS系列]无人机视频与与实景模型进行实时融合_无人机视频融合-CSDN博客文章浏览阅读1.5k次,点赞28次,收藏14次。将无人机视频与实景模型进行实时融合是一个涉及多个技术领域的复杂过程,主要包括无人机视频采集、实景模型构建、视频与模型…...
【一本通】分数约分
【一本通】分数约分 C语言CJavaPython 💐The Begin💐点点关注,收藏不迷路💐 编写一个给一个分数约分的程序。 输入 输出整数a,b,分别表示分子与分母 输出 约分后的分子与分母,用“/“分隔 …...
ArkTs的容器布局
组件按照布局的要求依次排列,构成应用的页面。在声明式UI中,所有的页面都是由自定义组件构成,开发中可以根据自己的需求,选择合适的布局进行页面开发。 一. 如何选择布局 声明式UI提供了以下10种常见布局,开发者可根…...
jenkins 出现 Jenkins: 403 No valid crumb was included in the request
文章目录 前言解决方式:1.跨站请求为找保护勾选"代理兼容"2.全局变量或者节点上添加环境变量3.(可选)下载插件 the strict Crumb Issuer plugin4.重启 前言 jenkins运行时间长了,经常出现点了好几次才能构建,然后报了Je…...
SpringDataJpa-字段加解密存储
SpringDataJpa-字段加解密存储 背景场景实现类型转换器实体类修改 Crypto 注解AOP 目前可使用场景注意 背景 遇到一个需求,对数据库中的某些字段进行加密存储,但是在各个服务流转中,需要是解密状态的。框架使用的是JPA。 Spring 提供了 Attri…...
python03-保留字、标识符;变量、常量;数据类型、数据类型之间的转化
一、保留字 VS 标识符 1-1、35个保留字 保留字,严格区分大小写! 查询保留字: 1-2、标识符 常量:python中没有明确的定义常量的关键字,常量的值在程序运行过程中不允许修改! 二、变量 VS 常量 2-1、变量 变…...
投影互动装置入驻,科普基地学习体验再上新台阶!
数字科技的迅猛进步极大地充盈了人们的日常生活,这一变革在主题乐园与科普教育基地等场所尤为显著。在这些地方,投影互动装置引领我们穿梭于光影构建的奇妙世界。特别是互动投影墙,它赋予观众前所未有的交互体验。那么,这种技术究…...
socket编程UDP-实现滑动窗口机制与累积确认GBN
在下面博客中,我介绍了利用UDP模拟TCP连接、按数据包发送文件的过程,并附上完整源码。 socket编程UDP-文件传输&模拟TCP建立连接脱离连接(进阶篇)_udp socket发送-CSDN博客 下面博客实现了停等机制。 socket编程UDP-实现停…...
乐观锁与悲观锁的概念
在多线程或多进程并发访问同一资源的情况下,为了防止数据的不一致性和竞态条件,常常需要使用锁机制来控制并发访问。锁机制大致可以分为 乐观锁(Optimistic Locking)和 悲观锁(Pessimistic Locking)。这两种…...
考研数学【线性代数基础box(数二)】
本文是对数学二线性代数基础进行总结,一些及极其简单的被省略了,代数的概念稀碎,不如高数关联性高,所以本文仅供参考,做题请从中筛选! 本文为初稿,后面会根据刷题和自己的理解继续更新 高数&a…...
游戏引擎学习第45天
仓库: https://gitee.com/mrxiao_com/2d_game 回顾 我们刚刚开始研究运动方程,展示了如何处理当人物遇到障碍物时的情况。有一种版本是角色会从障碍物上反弹,而另一版本是角色会完全停下来。这种方式感觉不太自然,因为在游戏中,…...
基于 mzt-biz-log 实现接口调用日志记录
🎯导读:mzt-biz-log 是一个用于记录操作日志的通用组件,旨在追踪系统中“谁”在“何时”对“何事”执行了“何种操作”。该组件通过简单的注解配置,如 LogRecord,即可实现接口调用的日志记录,支持成功与失败…...
无人设备之RTK地面基站篇
一、定义与功能 RTK地面基站是一种通过差分定位技术来实现GPS等全球导航卫星系统信号精确定位的设备。它通过与无人设备上的流动站进行实时数据通信,利用载波相位差分原理,消除卫星定位过程中的大部分公共误差,如卫星轨道误差、电离层延迟、对…...
TMS320C55x DSP芯片结构和CPU外围电路
第2章 DSP芯片结构和CPU外围电路 文章目录 第2章 DSP芯片结构和CPU外围电路TMS320C55x处理器的特点TMS320c55x CPU单元指令缓冲(Instruction Buffer Unit) I单元程序流程(Program Flow Unit) P单元地址数据(Address-data Flow Unit) A单元数据计算(Data Computation Unit) D单元…...