OpenGL的核心模式与立即渲染模式

摘要:
早期的OpenGL使用即时渲染模式,这对于绘制图形非常方便。当使用OpenGL的核心模式时,OpenGL迫使我们使用现代功能。当我们尝试使用过时的函数时,OpenGL会抛出错误并终止绘图。这就是为什么我们的教程面向OpenGL3.3的核心模式。答案很简单。OpenGL的所有更高版本都基于3.3,引入了额外的功能,并且没有改变核心架构。因此,所有概念和技术在现代OpenGL版本中都是一致的。当您有足够的经验时,您可以轻松使用OpenGL更高版本的新功能。

早期的OpenGL使用立即渲染模式(Immediate mode,也就是固定渲染管线),这个模式下绘制图形很方便。OpenGL的大多数功能都被库隐藏起来,开发者很少能控制OpenGL如何进行计算的自由。而开发者迫切希望能有更多的灵活性。随着时间推移,规范越来越灵活,开发者对绘图细节有了更多的掌控。立即渲染模式确实容易使用和理解,但是效率太低。因此从OpenGL3.2开始,规范文档开始废弃立即渲染模式,并鼓励开发者在OpenGL的核心模式(Core-profile)下进行开发,这个分支的规范完全移除了旧的特性。

当使用OpenGL的核心模式时,OpenGL迫使我们使用现代的函数。当我们试图使用一个已废弃的函数时,OpenGL会抛出一个错误并终止绘图。现代函数的优势是更高的灵活性和效率,然而也更难于学习。立即渲染模式从OpenGL实际运作中抽象掉了很多细节,因此它在易于学习的同时,也很难让人去把握OpenGL具体是如何运作的。现代函数要求使用者真正理解OpenGL和图形编程,它有一些难度,然而提供了更多的灵活性,更高的效率,更重要的是可以更深入的理解图形编程。

这也是为什么我们的教程面向OpenGL3.3的核心模式。虽然上手更困难,但这份努力是值得的。

现今,更高版本的OpenGL已经发布(写作时最新版本为4.5),你可能会问:既然OpenGL 4.5 都出来了,为什么我们还要学习OpenGL 3.3?答案很简单,所有OpenGL的更高的版本都是在3.3的基础上,引入了额外的功能,并没有改动核心架构。新版本只是引入了一些更有效率或更有用的方式去完成同样的功能。因此,所有的概念和技术在现代OpenGL版本里都保持一致。当你的经验足够,你可以轻松使用来自更高版本OpenGL的新特性。

免责声明:文章转载自《OpenGL的核心模式与立即渲染模式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇修改SQL Server2005 sa密码方法Kubernetes角色访问控制RBAC和权限规则(Role+ClusterRole)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

glViewport()函数和glOrtho()函数的理解

在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho.glOrtho是创建一个正交平行的视景体。 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。比如,常用的工程中的制图等。需要比较精确的显示。 而作为它的对立情况, glFrustum则产生一个透视投影。这是一种模拟真是生活中,人们视野观测物体的真实情况。例如:观察两...

[osg][opengl]透视投影的参数Perspective

gluPerspective这个函数指定了观察的视景体(frustum为锥台的意思,通常译为视景体)在世界坐标系中的具体大小,一般而言,其中的参数aspect应该与窗口的宽高比大小相同。比如说,aspect=2.0表示在观察者的角度中物体的宽度是高度的两倍,在视口中宽度也是高度的两倍,这样显示出的物体才不会被扭曲。 gluPerspective NAME...

win32下的OpenGL绘图环境框架

Win32下OpenGL入门 主要的步骤包括:添加opengl头文件,库文件,键盘鼠标响应,像素格式设置,opengl环境初始化,绘图变量设置,创建窗口,窗口大小改变时响应,绘制场景,源文件 1,新建一个win32项目(注意,不是console程序),在添加过程中,创建一个空的项目,然后,在解决方案资源管理器的源文件树目录下,添加一个cpp文件,文件可以命...

Vulkan vs OpenGL ES

Vulkan 简介 Vulkan是一个免费开放的、跨平台的、底层的图形API,在一定程度上比AMD Mantle、微软DirectX 12、苹果Metal更值得开发者关注。 Vulkan的最大任务不是竞争DirectX,而是取代OpenGL,所以重点要看和后者的对比。 在高分辨率、高画质、需要GPU发挥的时候,Vulkan、OpenGL的速度基本差不多,但...

用OpenGL进行曲线、曲面的绘制

实验目的 理解Bezier曲线、曲面绘制的基本原理;理解OpenGL中一维、二维插值求值器的用法。 掌握OpenGL中曲线、曲面绘图的方法,对比不同参数下的绘图效果差异; 代码1:用四个控制点绘制一条三次Bezier曲线 Github地址 #include "stdafx.h" #include <stdlib.h> #incl...

Klimt 特点 与OpenGL和OpenGL|ES 对比及其关系

http://read.newbooks.com.cn/info/129308.html Klimt (原名为SoftGL)是一个开源的3D图形库,主要针对的PDA和移动通信设备的应用。它的API和OpenGL和OpenGL|ES非常相像。开发 Klimt的组织并没有对其API的一致性进行声明。不过,Klimt可以兼容Coin3D的程序,Coin3D是建立...