您的位置:首页 > 运维架构

OpenGL的起源于发展

2019-07-11 03:40 1311 查看

周一到周五,每天一篇,北京时间早上7点准时更新~,中英文对照,一边学编程一边弹吉他,做一个奇葩码农!

请不要怀疑翻译是否有问题,我们的翻译工程师是蓝翔毕业的呢!

The Origins and Evolution of OpenGL(OpenGL的起源与发展)

OpenGL has its origins at Silicon Graphics Inc. (SGI) and its IRIS GL(OpenGL起源于硅谷图形信息有限公司和该公司的IRIS GL). GL stood for (and still stands for) “graphics library,”(GL是图形库的英文缩写) and in much of the modern OpenGL documentation you will see the term “the GL,” meaning “the graphics library,” originating from this era(在大多数现代OpenGL的文档中,你将会看到the GL这种属于,实际上就是从上面的那个起源的). Silicon Graphics was a manufacturer of high-end graphics workstations(硅谷图形信息有限公司是高端图形工作站的制造商). These were extremely expensive, and using a proprietary API for graphics wasn’t helping(以前IRIS GL的API是私有的,并且代价极大的API,对于产业没有啥帮助). Other manufacturers were producing much more inexpensive solutions running on competing APIs that were often compatible with each other(其他那些制造商却在生产一些更便宜的解决方案,并且它们的API之间可以互相兼容). In the early 1990s, SGI realized that portability was important and so decided to clean up IRIS GL,(在1990年的早些时候,SGI开始意识到可移植性的重要性,所以打算干掉IRIS GL) remove system-specific parts of the API, and release it as an open standard that could be implemented, royalty free, by anyone(移除那些系统特有的API,并做一个开放的标准发布,并且任何人可以免费使用这个标准). The very first version of OpenGL was released in June 1992 and was marked as OpenGL 1.0(最早诞生的OpenGL是1.0版本,诞生于1992年,记得那时候我刚结完婚,还没有小三,真是一段令人难忘的岁月)

That year, SGI was also instrumental in establishing the OpenGL Architectural Review Board (ARB)(那一年,SGI同时在建立OpenGL架构审核委员会中起到鸟很重要的作用), the original members of which included companies such as Compaq, DEC, IBM, Intel, and Microsoft(那些创始人公司包括那一堆,大家自己看英文). Soon, other companies such as Hewlett-Packard, Sun Microsystems, Evans & Sutherland, and Intergraph joined the group(很快,又有一批公司加入了这个组织,这些公司名字大家依然还是自己看英文). The OpenGL ARB is the standards body that designs, governs, and produces the OpenGL specification and is now a part of Khronos Group(现在隶属于Khronos集团的OpenGL的ARB组织实质性的控制着OpenGL的设计、管理以及发布规范), which is a larger consortium of companies that oversees the development of many open standards(Khronos集团则是一个更牛逼的集团,它管控着很多的开放标准,你也不清楚它管那些标准又不收钱是为了啥,我想绝壁不是为了学雷锋,做好事,因为他们根本不认识雷锋). Some of these original members either no longer exist (perhaps having gone out of business or having been acquired by or merged with other companies) or are no longer members of the ARB(现在有一部分OpenGL ARB组织的创始人公司已经因为嫌弃这个组织已经单飞了), having left the graphics business or otherwise gone their own way(这个单飞的组织后来搞出了DirectX). However, some still exist, either under new names or as the entity that was involved in the development of that very first version of OpenGL more than 20 years ago(任然有很多成员还是一直待在组织里的,他们对组织不离不弃,我想是因为他们跳槽跳不动的缘故)

At time of writing, there have been 19 editions of the OpenGL specification(在写这本书的时候,已经发布了19个版本的OpenGL的标准). Their version numbers and time of publication are shown in Table 1.1(他们的版本号和发布时间在表1.1里). This book covers version 4.5 of the OpenGL specification, and most of the samples in it require up-todate drivers and hardware to run(本书包含了OpenGL4.5,如果你无法跑这些代码的话,或许你应该换个显卡或者升级一下驱动,小姑凉)

Twenty years is a long time in the development of cutting-edge technology(20年对于一个前沿技术来说还真滴是不容易). In 1992, the top-of-the-line Intel CPU was the 80486, math coprocessors were still optional(1992年的时候,最牛掰的intel CPU还是80486,那时候数学计算指令还不一定被CPU支持), and the Pentium had not yet been invented (or at least released)(并且奔腾处理器还没被发明). Apple computers were still using Motorola 68K-derived processors and the PowerPC processors to which they would later switch would be made available during the second half of 1992(直到1992年的后半年以前,苹果电脑还在用摩托罗拉的68k-derived和PowerPC的处理器). Highperformance graphics acceleration was simply not something that was common in commodity home computers(那个时候,家用电脑上压根儿就没有啥高性能的图形加速装置). If you didn’t have access to a high-performance graphics workstation, you probably would have no hope of using OpenGL for anything(如果你不使用图形工作站的话,你是无法接触到OpenGL这个东西的). Software rendering ruled the world and the Future Crew’s “Unreal” demo won the Assembly ’92 demo party(那个时候软渲染统治着世界,在不久的将来,虚幻引擎赢得了Assembly 92的大奖). The best you could hope for in a home computer was some basic filled polygons or sprite rendering capabilities(那时候你能期待的最好的就是绘制基本几何图形或者精灵的能力。). The state of the art in 1992 home computer 3D graphics is shown in Figure 1.2(1992年家用电脑那个渣画面已经被显示在图1.2上了,你去瞅瞅,那个时候写个程序得有多爽,根本没这么多算法)

Over time, the price of graphics hardware came down, performance went up(随着时间的推移,显卡的价格掉下来了,性能也彪上去了), and— partly due to low-cost acceleration add-in boards for PCs(这样一来,新的特性看起来变得能被消费者负担得起,所以很多新的特性就被加到了OpenGL里面去), and partly due to the increased performance of video game consoles—new features and capabilities showed up in affordable graphics processors and were added to OpenGL(这里面部分原因可能是因为低廉的内置的主板加速器也有可能是因为游戏主机增加的性能). Most of these features originated in extensions proposed by members of the OpenGL ARB(大部分的新特性本来都是以扩展的形式发布的). Some interacted well with each other and with existing features in OpenGL, and some did not(有一部分与既有的特性很好的共存,有的一些则不能). Also, as newer, better ways of squeezing performance out of graphics systems were invented(当然,更新更先进的提高图形系统性能的技术被发明), they were simply added to OpenGL, resulting in it having multiple ways of doing the same thing(他们被加到了OpenGL当中,导致的结果就是,你可以使用多种方式去达成同一个目的。)

For many years, the ARB held a strong position on backward compatibility(很多年过去了,ARB这批API在向后兼容方面起到鸟重要的作用), as it still does today. However, this backward compatibility comes at a significant cost(然而,向后兼容会带来明显的性能损耗). Best practices have changed(最好的编程方式随着架构的改变已经改变了,所以以前的代码就变得不是最高效的代码)—what may have worked well or was not really a significant bottleneck on mid-1990s graphics hardware doesn’t always fit modern graphics processor architecture well(90年代的图形硬件不可能总是很好的适应现代最新的图形处理器的架构). Specifying how new features interact with the older legacy features isn’t easy and(让新的特性与旧的特×××互不是一件容易的事), in many cases, can make it almost impossible to cleanly introduce a new feature to OpenGL(在很多情况下,基本上不可能让非常干净的,不影响其它模块的向OpenGL中添加新特性已经变得不可能鸟). As for implementing OpenGL, this has become such a difficult task that drivers tend to have more bugs than they really should(当那些硬件厂商实现OpenGL的时候,驱动程序员已经开始受不鸟了,他们会写很多的,表面上看不应该出现的BUG) and graphics vendors need to spend considerable amounts of energy maintaining support for all kinds(并且显卡厂商需要花费大量的时间和精力去使得最新的显卡与那些老旧的API兼容) of legacy features that don’t contribute to the advancement of or innovation in graphics.For these reasons, in 2008, the ARB decided it would “fork” the OpenGL specification into two profiles(因此,在2008年北京奥运会的那年,ARB组织打算开始维护两份OpenGL的标准). The first is the modern, core profile, which removes a number of legacy features, leaving only those that are truly accelerated by current graphics hardware(第一份标准就是核心的标准,它会移除大量的老式API,只支持体现了显卡最新架构的OpenGLAPI). This specification is several hundred pages shorter than the other version of the specification, the compatibility profile(核心标准的OpenGL API的文档比兼容版OpenGLAPI少好几百页呢). The compatibility profile maintains backward compatibility with all revisions of OpenGL back to version 1.0(兼容版的OpenGL标准则会维护从1.0开始到最新版本OpenGL的所有API). As a consequence, software written in 1992 should compile and run on a modern graphics card with a thousand times greater performance today than when that program was first produced(因此,1992年写的软件应该可以被编译和在现代的显卡上运行,并且速度应该是比以前快上千倍)

The compatibility profile really exists to allow software developers to maintain legacy applications(兼容版本的标准确实使得软件开发者可以维护以前老版本的程序) and to add features to them without having to tear out years of work to shift to a new API(而不会为了添加点新功能,而需要把以前老版本的所有OpenGL的API全部搬迁至新版本的API). However, the core profile is strongly recommended by most OpenGL experts as the profile that should be used for new application development(但是,专家们忍让会强烈建议软件开发者使用核心标准). In particular, on some platforms, newer features are available only if you are using the core profile of OpenGL(尤其是在某些平台上,OpenGL的一些API只在核心标准的OpenGL执行环境下,才能被调用); on others, an application written using the core profile of OpenGL will run faster than that same application unmodified(另一方面,你使用核心标准的OpenGL运行环境去开发程序一定会比使用兼容标准开发的OpenGL程序快), except to request the compatibility profile, even if it uses only features that are available in core profile OpenGL(即便你在兼容标准的OpenGL运行环境中全部调用的事核心标准下的OpenGL API,你的程序都会变慢). Finally, if a feature is in the compatibility profile but has been removed from the core profile of OpenGL, there’s probably a good reason for that—and it’s a reasonable indication that you shouldn’t be using it(最后,如果在兼容标准下的一个API被从核心标准里移除了,这就意味着,你以后尽量要避免使用那个API). This book covers only the core profile of OpenGL(这本书只包含了核心标准下的OpenGL API); this is the last time we will mention the compatibility profile(这将是本书最后一次提到兼容标准的OpenGL运行环境)

第一时间获取最新桥段,请关注东汉书院以及图形之心公众号

图形之心,等你来玩哦

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: