第一阶段,opengl 概念

2024-04-25 21:08
文章标签 概念 opengl 第一阶段

本文主要是介绍第一阶段,opengl 概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是OpenGL

在开始我们的旅程之前,我们应该首先定义OpenGL实际上是什么。OpenGL主要被认为是API(应用程序接口)为我们提供了大量可用于处理图形和图像的功能。但是,OpenGL本身不是API,而只是由Khronos Group开发和维护的规范。

OpenGL规范准确地指定了每个函数的结果/输出以及执行方式。然后由实施此规范的开发人员提出该功能应如何运行的解决方案。由于OpenGL规范未提供实现细节,因此OpenGL的实际开发版本可以具有不同的实现,只要它们的结果符合规范(并因此对用户相同)即可。

开发实际OpenGL库的人通常是图形卡制造商。您购买的每个图形卡都支持特定版本的OpenGL,这是专门为该卡(系列)开发的OpenGL版本。当使用Apple系统时,OpenGL库由Apple自己维护,而在Linux下,图形供应商的版本和爱好者对这些库的改编组合在一起。这也意味着,每当OpenGL出现它不应该出现的怪异行为时,这很可能是显卡制造商(或开发/维护该库的人)的错。

扩展名

OpenGL的一个强大功能是对扩展的支持。每当图形公司想出新技术或新的大型优化来渲染时,通常会在延期在驱动程序中实现。如果运行应用程序的硬件支持此类扩展,则开发人员可以使用扩展提供的功能来获得更高级或更有效的图形。这样,图形开发人员仍然可以使用这些新的渲染技术,而不必等待OpenGL在其将来的版本中包含该功能,只需检查图形卡是否支持该扩展即可。通常,当扩展程序受欢迎或非常有用时,它最终会成为将来OpenGL版本的一部分。

开发人员必须在使用它们之前(或使用OpenGL扩展库)查询是否有这些扩展名可用。这使开发人员可以根据扩展是否可用来将事情做得更好或更有效:

状态机

OpenGL本身就是一个大型状态机:定义OpenGL当前操作方式的变量集合。OpenGL的状态通常称为OpenGL语境。使用OpenGL时,我们通常通过设置一些选项,操纵一些缓冲区然后使用当前上下文进行渲染来更改其状态。

每当我们告诉OpenGL例如现在要绘制线条而不是三角形时,我们都会通过更改一些上下文变量来更改OpenGL的状态,该变量设置了OpenGL的绘制方式。通过告诉OpenGL它应该绘制线来更改上下文后,下一个绘制命令现在将绘制线而不是三角形。

在OpenGL中工作时,我们会遇到几种 状态改变 改变上下文的功能 状态使用根据OpenGL的当前状态执行某些操作的函数。只要您牢记OpenGL本质上是一个大型状态机,它的大多数功能都会更有意义。

对象

OpenGL库是用C编写的,并允许使用其他语言进行许多派生,但它的核心仍然是C库。由于许多C的语言构造都不能很好地将其翻译成其他高级语言,因此OpenGL在开发时就考虑了几种抽象。这些抽象之一是对象 在OpenGL中。

一个 目的OpenGL中的选项是代表OpenGL状态子集的选项的集合。例如,我们可以有一个代表绘图窗口设置的对象。然后,我们可以设置其大小,支持的颜色数等等。可以将对象可视化为类似C的结构:

这篇关于第一阶段,opengl 概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935799

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控