第一阶段,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的结构:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值