您好,登錄后才能下訂單哦!
周一到周五,每天一篇,北京時間早上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運行環境)
第一時間獲取最新橋段,請關注東漢書院以及圖形之心公眾號
圖形之心,等你來玩哦
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。