<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ATEGPU &#187; Hisitory</title>
	<atom:link href="http://www.ategpu.com/tag/hisitory/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ategpu.com</link>
	<description>Embedded GPU With OpenGL ES API</description>
	<lastBuildDate>Thu, 12 Aug 2010 12:37:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>OpenGL讲座稿_4. OpenGL2.0</title>
		<link>http://www.ategpu.com/2009/10/21/opengl%e8%ae%b2%e5%ba%a7%e7%a8%bf_4-opengl20.html</link>
		<comments>http://www.ategpu.com/2009/10/21/opengl%e8%ae%b2%e5%ba%a7%e7%a8%bf_4-opengl20.html#comments</comments>
		<pubDate>Wed, 21 Oct 2009 01:56:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Hisitory]]></category>

		<guid isPermaLink="false">http://www.ategpu.com/2009/10/21/opengl%e8%ae%b2%e5%ba%a7%e7%a8%bf_4-opengl20.html</guid>
		<description><![CDATA[至OpenGL 1.3为止，OpenGL的发展几乎处于停滞不前的状态，主要的进展是OpenGL扩展指令的推出。这些扩展指令是一些绘图功能、视频及绘图的整合工具，组成了一个混乱的扩展指令组，其中许多都是为专用应用程序而设计的，对大多数需要一致性开发平台的ISV(独立软件开发商，Independent Software Vender)来说并不实用。ARB也已经发现为何无法将OpenGL往前推进的几个原因，包括知识产权(IP)争论的潜伏危机。希望参与ARB(委员会的策划)并提供技术、但也同时也想保护各自IP的厂商大感挫折。
在 2001年9月的ARB会议上，3Dlabs展示了他们的OpenGL 2.0版本(在过去，SGI是ARB事实上的领导者、与下一代扩展指令的发起人。由于SGI明智的将其资源投注在公司的重整上，3Dlabs因而逐渐地在会议中扮演起更为主动的角色，并着手通过教育上的努力，为即将于九月份会议上提出的OpenGL 2.0做准备。)。ARB接受了3Dlabs的提议进行OpenGL 2.0架构的开发，他们也描绘出一个清楚的发展路线。由于已经相当明确，因此OpenGL的主要且近期的目标，就在于启动并开发硬件的可编程能力。然而 OpenGL在其它地方也需要进行更新。OpenGL是在1992被开发出来的，当时的硬件较低级、且在内存管理上并不是那么注重。现在该团体被赋予在 OpenGL中加上内存管理，以便支持高级像素处理的责任。此外，OpenGL还需要和DirectX在材质压缩、也就是ARB所谓的像素封装上进行竞争或合作。接着，嵌入式绘图对OpenGL来说也是非常关键的一项需求。
最后，OpenML的开发兼推行商Khronos Group，则希望将OpenML加入OpenGL的共同发展项目中，以开发结合视频功能与高级绘图能力的产品。此外，包含3Dlabs、Sun(升阳)、Intel、 Discreet、Evans、Sutherland、Pinnacle、RealViz与SGI在内的OpenML组织，对嵌入式设备也有意涉足。他们希望藉由建立互连网设备上的多媒体标准，可以在PDA游戏的移植上有所突破，提供真正的绘图、视频和互动能力。
要开发高级OpenGL标准最先要做的一步，就是回头整合与OpenGL 1.3间的兼容性，同时藉由在一些必备功能、如顶点与像素处理及内存管理上，与DirectX共同合作以维持均势。在第一阶段，OpenGL将会向下保留对Open GL 1.3的完整兼容性。为了达成这一目标，OpenGL 2.0将由OpenGL 1.3现有的功能、搭配完全兼容的新功能所组成。这个好处在于它也将开始对在ARB停滞不前时期，数量不断增加、纠缠不清的扩展指令做一彻底精简。此外，硬件可编程能力的实现，将提供一个更好的方法以整合现有的扩展指令。
下一步就是合成一个提供开发者更多精简API的&#8221;纯OpenGL 2.0&#8243;。这可通过将特定OpenGL功能规范为&#8221;旧式&#8221;功能，并指导开发商采用更具有弹性的可编程功能、而扬弃固定不变的函数性功能来达成(图略)。
2004 年9月7日发布OpenGL2.0。主版本号的升级代表这一版本支持高级可编程着色器(high-level programmable shaders)。而从各个版本的升级时间来看，也会发现ARB对OpenGL2.0的推进态度是非常积极的(1.3之前为每三年做一次版本升级，之后为每年一次升级)。
可编程能力是OpenGL2.0里的一个关键词，这表示它是设计来供应用程序存取运用的。为使其符合大部分应用程序与用户的标准，绘图可编程能力通过一种被CPU所采用的可编程能力、类似高级程序设计语言的方式加入的。它将提供一个丰富的，独立于硬件的功能集，并专为在OpenGL架构下使用所设计。
- 可编程顶点处理将会是最常被谈论到的功能。它将取代坐标转换、材质应用程序及照明，并且允许进行随机个别顶点运算。
- 可编程片段处理将取代材质存取、材质应用及雾化功能，以及随机个别片段运算这一开发者企盼已久的功能。
- 可编程图像格式将取代固定格式的封装和解封装运算，在自OpenGL传送或接收像素数据时，将允许类型与格式进行任意组合。
个想法是为了藉由提供可编程能力、与丰富且常效性的功能来取代复杂度，以减少对现有及未来扩展指令的需求。
新API的特色包括：
- 阴影语言。一种独立于硬件的OpenGL2.0阴影语言，与OpenGL1.3有紧密的整合。现有的状态机又增加了可编程单元，将可增设 OpenGL1.3固定式的替代功能。新的着色器可自动纪录现有的OpenGL状态(例如进行一个简单的光源转换而无须覆写参数管理)。它以C为架构，加上容易理解的向量和矩阵类型，同时整合了一些Renderman功能。这套语言会虚拟资源管线，因此对大多数的程序设计师来说便不用去考虑资源管理。将来也会有相同形式、供顶点着色与片段着色之用的语言，并加上一些特别内建的功能和数据限定。
- 顶点处理。其功能在于照明、材质和几何图形的弹性。顶点程序取代部分的OpenGL管线如顶点转换、正规转换、正规化和尺寸重设、光照、彩色材质应用程序、色彩强化、材质坐标产生以及材质坐标转换。顶点着色并不取代下列功能：透视投影与视觉坐标对应、柱状及用户剪裁、隐面消除、原始组合、双面照明选择、多重模式处理、多边形平移及多边形模式。
- 片段处理器。其功能为材质存取、插值计算与像素运算弹性。OpenGL2.0增加了片段处理器能力，将取代下列功能：内插值顶点数据运算、像素缩放、材质存取、缩放和偏向、材质应用、色表查找、雾化、旋绕以及OpenGL管线中的色彩矩阵部分。片段着色不取代下列功能：OpenGL的阴影模型、直方图、覆盖度、极值、像素所有权测试、像素封装和解封装、剪裁、点刻、alpha测试、深度测试、模印测试、alpha混色、逻辑运算、抖动及平面屏蔽。
- 封装和解封装运算。封装和解封装运算的目的在于将&#8221;应用像素&#8221;转换成一致性的像素群数据流。在数据传送到解封装处理器前先运用未封装储存模式。解封装处理器与 应用-&#62;OpenGL 的传输有关，而封装处理器则负责 OpenGL-&#62;应用的传输这部分，两者都跟复制运算没有关系。绘图子系统内的复制只使用片段处理器。
- 数据移动与内存管理。为了增进性能，数据移动量必需减至最低。视觉处理的主要数据为：顶点数据(色彩、正规、位置、用户定义等)以及图像数据(材质、图像、像素缓冲区)。建立与管理OpenGL对象的机制大体上就是定位、连结与通过相同接口控制对象，并运用顶点数组、图像、材质、着色、显示清单以及像素缓冲区。OpenGL2.0提供更好的内存管理，并提供应用程序对数据移动的控制能力、更好的顶点处理能力、将数据抓进OpenGL的更有效方法以及 OpenGL对象的直接存取。此外，内存管理功能能够消除为增进数据流量而产生的数据备份，从而大幅提升性能。
- 异步OpenGL。加入了异步运算，具有一般化的时间控制能力，提供了更好的并行化和同步化能力。这将有助于增进平行化和运算时机的控制。
- Glsync。一种新的OpenGL数据类型，用于提供统一的同步化机制。
此外增加了许多额外的功能及能力如：
- FlushStream。OpenGL2.0之前的规格在数据暂存上允许过多的自由度。清除功能被滥用且迫使驱动程序对此做最优化。真正的清除功能是用在当应用程序已经下完渲染指令后才做的。暂存的渲染工作应该和应用程序在处理其它事项时并行运行，在到Glsync上等待前，必需要确定暂存起来的命令会被加以处理。FlushStream就用于解决这一问题。
- 异步数据链路。可在数据复制前提供回传功能，并在数据进行连结时允许主机并行处理。执行线程在OpenGL读数据时可以做其它事。这可以避免内存内容在OpenGL存取完成前被修改，不过这在可以安全修改内存内容时需要加以通知。
- 后台命令流。藉由后台命令流功能，另一个命令流可以下达异步连结的指令，给比优先级较低的渲染工作执行。
- 场消隐通知。让OpenGL可以对视频输出和程序代码进行同步化。
from: http://kwun.blogbus.com/logs/19051080.html
]]></description>
		<wfw:commentRss>http://www.ategpu.com/2009/10/21/opengl%e8%ae%b2%e5%ba%a7%e7%a8%bf_4-opengl20.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
