第一阶段,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

相关文章

【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的车辆信息显示与控

01 Docker概念和部署

目录 1.1 Docker 概述 1.1.1 Docker 的优势 1.1.2 镜像 1.1.3 容器 1.1.4 仓库 1.2 安装 Docker 1.2.1 配置和安装依赖环境 1.3镜像操作 1.3.1 搜索镜像 1.3.2 获取镜像 1.3.3 查看镜像 1.3.4 给镜像重命名 1.3.5 存储,载入镜像和删除镜像 1.4 Doecker容器操作 1.4

【机器学习-一-基础概念篇】

机器学习 定义分类算法 应用 定义 机器学习最早是被Arthur Samuel 提出的一个概念,指计算机无需明确编程即可学习的研究领域。1950年他发明的跳棋程序,这个人机对弈游戏让他的声名鹊起,机器学习这个概念才进入大众的是视线。 在这个跳棋程序里,他编程了一种算法,这个程序与Arthur下了数万次跳棋,计算机逐渐学会了下在哪里有更大的可能会赢得比赛,哪里会输,通过这种方法,最

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。

AI辅助编程里的 Atom Group 的概念和使用

背景 在我们实际的开发当中,一个需求往往会涉及到多个文件修改,而需求也往往有相似性。 举个例子,我经常需要在 auto-coder中需要添加命令行参数,通常是这样的: /coding 添加一个新的命令行参数 --chat_model 默认值为空 实际上这个需求涉及到以下文件列表: /Users/allwefantasy/projects/auto-coder/src/autocoder/auto

读软件设计的要素04概念的关系

1. 概念的关系 1.1. 概念是独立的,彼此间无须相互依赖 1.1.1. 一个概念是应该独立地被理解、设计和实现的 1.1.2. 独立性是概念的简单性和可重用性的关键 1.2. 软件存在依赖性 1.2.1. 不是说一个概念需要依赖另一个概念才能正确运行 1.2.2. 只有当一个概念存在时,包含另一个概念才有意义 1.3. 概念依赖关系图简要概括了软件的概念和概念存在的理

OPENGL顶点数组, glDrawArrays,glDrawElements

顶点数组, glDrawArrays,glDrawElements  前两天接触OpenGL ES的时候发现里面没有了熟悉的glBegin(), glEnd(),glVertex3f()函数,取而代之的是glDrawArrays()。有问题问google,终于找到答案:因为OpenGL ES是针对嵌入式设备这些对性能要求比较高的平台,因此把很多影响性能的函数都去掉了,上述的几个函数都被移除了。接

OpenGL ES学习总结:基础知识简介

什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES管道(Pipeline) OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工