From 6b349ea39642c63fe222c1f3682534cdcd0d9bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 19:22:26 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E4=B8=80=E5=8D=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 01 Getting started/01 OpenGL.md | 58 +++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index 5d2cd05..47166b7 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -1,7 +1,61 @@ -本文作者JoeyDeVries,由gjy_1992翻译自[http://learnopengl.com](http://learnopengl.com/#!Getting-started/OpenGL) +鏈枃浣滆匤oeyDeVries锛岀敱gjy_1992缈昏瘧鑷猍http://learnopengl.com](http://learnopengl.com/#!Getting-started/OpenGL) ##OpenGL -未翻译完成... +鏈炕璇戝畬鎴... --- +鍦ㄨ繘琛岃繖娈垫梾绋嬩箣鍓嶆垜浠厛瑙i噴涓婳penGL鍒板簳鏄粈涔堛傚畠涓鑸璁や负鏄竴涓簲鐢ㄧ▼搴忕紪绋嬫帴鍙o紙API锛夛紝鍖呭惈浜嗕竴绯诲垪鍙互鎿嶄綔鍥惧舰銆佺敾鍍忕殑鏂规硶銆傜劧鑰岋紝OpenGL鏈韩骞朵笉鏄竴涓狝PI锛屼粎浠呮槸涓涓鑼冿紝鐢盵Khronos缁勭粐](http://www.khronos.org/)鍒跺畾骞剁淮鎶ゃ + +OpenGL瑙勮寖涓ユ牸瑙勫畾浜嗘瘡涓嚱鏁拌濡備綍鎵ц锛屼互鍙婂畠浠濡備綍杩斿洖銆傝嚦浜庡唴閮ㄥ叿浣撴瘡涓嚱鏁版槸濡備綍瀹炵幇鐨勶紝灏嗙敱openGL搴撶殑寮鍙戣呰嚜琛屽喅瀹氾紙娉細杩欓噷寮鍙戣呮槸鎸囩紪鍐橭penGL搴撶殑浜猴級銆傚洜涓篛penGL瑙勮寖骞舵病鏈夎瀹氬疄鐜扮殑缁嗚妭锛屽叿浣撶殑OpenGL搴撳厑璁镐娇鐢ㄤ笉鍚岀殑瀹炵幇锛屽彧瑕佸叾鍔熻兘鍜岀粨鏋滀笌瑙勮寖鐩稿尮閰嶏紙浜﹀嵆锛屼綔涓虹敤鎴蜂笉浼氭劅鍙楀埌鍔熻兘涓婄殑宸紓锛夈 + +瀹為檯鐨凮penGL搴撶殑寮鍙戣呴氬父鏄樉鍗$殑鐢熶骇鍟嗐傛瘡涓綘璐拱鐨勬樉鍗¢兘浼氭敮鎸佺壒瀹氱増鏈殑OpenGL锛岄氬父鏄负涓涓郴鍒楃殑鏄惧崱涓撻棬寮鍙戠殑銆傚綋浣犱娇鐢ㄨ嫻鏋滅郴缁熺殑鏃跺欙紝OpenGL搴撴槸鐢辫嫻鏋滆嚜韬淮鎶ょ殑銆傚湪Linux涓嬶紝鏈夋樉鍗$敓浜у晢鎻愪緵鐨凮penGL搴擄紝涔熸湁涓浜涚埍濂借呮敼缂栫殑鐗堟湰銆傝繖涔熸剰鍛崇潃浠讳綍鏃跺橭penGL搴撹〃鐜扮殑琛屼负涓庤鑼冭瀹氱殑涓嶄竴鑷存椂锛屽熀鏈兘鏄簱鐨勫紑鍙戣呯暀涓嬬殑bug銆傦紙蹇敥閿咃級 + + +
+鐢变簬澶у鏁板疄鐜伴兘鏄敱鏄惧崱鍘傚晢缂栧啓鐨勶紝褰撲骇鐢熶竴涓猙ug鏃堕氬父鍙互閫氳繃鍗囩骇鏄惧崱椹卞姩鏉ヨВ鍐炽傝繖浜涢┍鍔ㄤ細鍖呮嫭浣犵殑鏄惧崱鑳芥敮鎸佺殑鏈鏂扮増鏈殑OpenGL锛岃繖涔熸槸涓轰粈涔堟绘槸寤鸿浣犲伓灏旀洿鏂颁竴涓嬫樉鍗¢┍鍔ㄣ +
+ + +Khronos鍏紑涓绘寔鎵鏈夌増鏈殑OpenGL瑙勮寖涔︾殑鍒跺畾銆傛湁鍏磋叮鐨勮鑰呭彲浠ユ壘鍒癘penGL3.3锛堟垜浠皢瑕佹彁鍒扮殑鐗堟湰锛夌殑[瑙勮寖涔(https://www.opengl.org/registry/doc/glspec33.core.20100311.withchanges.pdf)銆傚鏋滀綘鎯虫繁鍏ュ埌OpenGL鐨勭粏鑺傦紙娉ㄦ剰鍙弿杩板嚱鏁扮殑鍔熻兘鑰屼笉绠″疄鐜帮級锛岃繖鏄釜寰堝ソ鐨勯夋嫨銆傝瑙勮寖杩樻彁渚涗竴涓己澶х殑鍙互瀵绘壘鍒版瘡涓嚱鏁板叿浣撳姛鑳界殑鍙傝冦 + +##瀵规瘮鏍稿績妯″紡鍜岀珛鍗虫覆鏌撴ā寮 + +鏃╂湡鐨凮penGL浣跨敤绔嬪嵆娓叉煋妯″紡锛堝浐瀹氭覆鏌撶绾匡級锛岃繖涓ā寮忎笅缁樺埗鍥惧舰寰堟柟渚裤侽penGl鐨勫ぇ澶氭暟鍔熻兘閮借闅愯棌璧锋潵锛屽紑鍙戣呭緢灏戣兘鎺у埗OpenGL濡備綍杩涜璁$畻銆傚紑鍙戣呮渶缁堝笇鏈涙洿澶氱殑鐏垫椿鎬с傞殢鐫鏃堕棿鎺ㄧЩ锛岃鑼冭秺鏉ヨ秺鐏垫椿锛屽紑鍙戣呬篃鑳芥洿澶氱殑鎺у埗缁樺浘缁嗚妭銆傜珛鍗虫覆鏌撴ā寮忕‘瀹炲鏄撲娇鐢ㄥ拰鐞嗚В锛屼絾鏄晥鐜囧お浣庛傚洜姝や粠OpenGL3.2寮濮嬶紝瑙勮寖涔﹀紑濮嬪簾寮冪珛鍗虫覆鏌撴ā寮忥紝鎺ㄨ鏍稿績妯″紡锛岃繖涓ā寮忓畬鍏ㄧЩ闄や簡鏃х殑鐗规с + +褰撲娇鐢ㄦ牳蹇冩ā寮忔椂锛孫penGL杩娇鎴戜滑浣跨敤鐜颁唬鐨勫仛娉曘傚綋鎴戜滑璇曞浘浣跨敤涓涓簾寮冪殑鍑芥暟鏃讹紝OpenGL浼氭姏鍑轰竴涓敊璇苟缁堟缁樺浘銆傜幇浠e仛娉曠殑浼樺娍鏄洿楂樼殑鐏垫椿鎬у拰鏁堢巼锛岀劧鑰屼篃鏇撮毦浜庡涔犮傜珛鍗虫覆鏌撴ā寮忎粠OpenGL瀹為檯鎿嶄綔涓娊璞℃帀浜嗗緢澶氱粏鑺傦紝鍥犺屽畠鏄撲簬瀛︿範鐨勫悓鏃讹紝涔熷緢闅惧幓鎶婃彙OpenGL鍏蜂綋鏄浣曟搷浣滅殑銆傜幇浠e仛娉曡姹備娇鐢ㄨ呯湡姝g悊瑙penGL鍜屽浘褰㈢紪绋嬶紝瀹冩湁涓浜涢毦搴︼紝鐒惰屾彁渚涗簡鏇村鐨勭伒娲绘э紝鏇撮珮鐨勬晥鐜囷紝鏇撮噸瑕佺殑鍙互鏇存繁鍏ョ殑鐞嗚В鍥惧舰缂栫▼銆 + +杩欎篃鏄负浠涔堟垜浠殑鏁欑▼闈㈠悜OpenGL3.3鐨勬牳蹇冩ā寮忋傝櫧鐒朵笂鎵嬫洿鍥伴毦锛屼絾鏄煎緱鍘诲姫鍔涖 + +鐜颁粖鏇撮珮鐗堟湰鐨凮penGL宸茬粡鍙戝竷锛堢洰鍓嶆渶鏂版槸4.5锛夛紝浣犲彲鑳戒細闂細涓轰粈涔堟垜浠繕瑕佸涔3.3锛熺瓟妗堝緢绠鍗曪紝鎵鏈塐penGL鐨勬洿楂樼殑鐗堟湰閮芥槸鍦3.3鐨勫熀纭涓婏紝娣诲姞浜嗛澶栫殑鍔熻兘锛屽苟涓嶆洿鏀规牳蹇冩灦鏋勩傛柊鐗堟湰鍙槸寮曞叆浜嗕竴浜涙洿鏈夋晥鐜囨垨鏇存湁鐢ㄧ殑鏂瑰紡鍘诲畬鎴愬悓鏍风殑鍔熻兘銆傚洜姝ゆ墍鏈夌殑姒傚康鍜屾妧鏈湪鐜颁唬OpenGL鐗堟湰閲岄兘淇濇寔涓鑷淬傚綋浣犵殑缁忛獙瓒冲锛屼綘鍙互杞绘澗浣跨敤鏉ヨ嚜鏇撮珮鐗堟湰OpenGL鐨勬柊鐗规с + + +
+褰撲娇鐢ㄦ柊鐗堟湰OpenGL鐨勬柊鐗规ф椂锛屽彧鏈夋柊涓浠g殑鏄惧崱鑳藉鏀寔浣犵殑搴旂敤绋嬪簭銆傝繖涔熸槸涓轰粈涔堝ぇ澶氭暟寮鍙戣呭熀浜庤緝浣庣増鏈殑OpenGL缂栧啓绋嬪簭锛屽苟鏈夐夋嫨鐨勫惎鐢ㄦ柊鐗规с +
+ + +鍦ㄦ湁浜涙暀绋嬮噷浣犱細鍙戠幇鍍忓涓嬫柟寮忔敞鏄庣殑鏂扮壒鎬с + +##鎵╁睍 + +OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴涓柊鐗规ф垨鑰呮覆鏌撲笂鐨勫ぇ浼樺寲锛岄氬父浼氫互鎵╁睍鐨勬柟寮忓湪椹卞姩涓疄鐜般傚鏋滀竴涓▼搴忓湪鏀寔杩欎釜鎵╁睍鐨勬樉鍗′笂杩愯锛屽紑鍙戣呭彲浠ヤ娇鐢ㄨ繖涓墿灞曟彁渚涚殑涓浜涙洿鍏堣繘鏇存湁鏁堢殑鍥惧舰鍔熻兘銆傞氳繃杩欑鏂瑰紡锛屽紑鍙戣呬笉蹇呯瓑寰呬竴涓柊鐨凮penGL瑙勮寖闈笘锛屽氨鍙互鏂逛究鐨勬鏌ユ樉鍗℃槸鍚︽敮鎸佹鎵╁睍銆傞氬父锛屽綋涓涓墿灞曢潪甯告祦琛屾垨鏈夌敤鐨勬椂鍊欙紝瀹冨皢鏈缁堟垚涓烘湭鏉ョ殑OpenGL瑙勮寖鐨勪竴閮ㄥ垎銆 + +浣跨敤鎵╁睍鐨勪唬鐮佸ぇ澶氱湅涓婂幓濡備笅锛 + + ```c++ + if(GL_ARB_extension_name) + { + // Do cool new and modern stuff supported by hardware + } + else + { + // Extension not supported: do it the old way + } + ``` + +浣跨敤OpenGL3.3鏃讹紝鎴戜滑寰堝皯闇瑕佷娇鐢ㄦ墿灞曟潵瀹屾垚澶у鏁板姛鑳斤紝浣嗘槸鎺屾彙杩欑鏂瑰紡鏄繀椤荤殑銆 + +##鐘舵佹満 + +OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満銆 \ No newline at end of file From 5da5c24816f6cd024cb347345ec1bee20f0089ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 19:26:14 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=AB=98=E4=BA=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 01 Getting started/01 OpenGL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index 47166b7..d109acc 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -43,7 +43,7 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 浣跨敤鎵╁睍鐨勪唬鐮佸ぇ澶氱湅涓婂幓濡備笅锛 - ```c++ +```c++ if(GL_ARB_extension_name) { // Do cool new and modern stuff supported by hardware @@ -52,7 +52,7 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 { // Extension not supported: do it the old way } - ``` +``` 浣跨敤OpenGL3.3鏃讹紝鎴戜滑寰堝皯闇瑕佷娇鐢ㄦ墿灞曟潵瀹屾垚澶у鏁板姛鑳斤紝浣嗘槸鎺屾彙杩欑鏂瑰紡鏄繀椤荤殑銆 From 91977c7bb984e068148d26243a604f97bba765d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 19:50:36 +0800 Subject: [PATCH 03/10] test autologin --- 01 Getting started/01 OpenGL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index d109acc..8430209 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -58,4 +58,4 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 ##鐘舵佹満 -OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満銆 \ No newline at end of file +OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛 \ No newline at end of file From 099c91ec4c483baffe336498d6d3f6a698084fee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 20:00:01 +0800 Subject: [PATCH 04/10] test --- 01 Getting started/01 OpenGL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index 8430209..4416b4a 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -58,4 +58,4 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 ##鐘舵佹満 -OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛 \ No newline at end of file +OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛侽penGL鐨勭姸鎬侀氬父琚О涓篛penGL涓婁笅鏂囷紙context锛夈 \ No newline at end of file From 69d733defcf071189935fd76027b4b3a2417f52b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 20:10:50 +0800 Subject: [PATCH 05/10] add --- 01 Getting started/01 OpenGL.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index 4416b4a..e7b1434 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -58,4 +58,5 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 ##鐘舵佹満 -OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛侽penGL鐨勭姸鎬侀氬父琚О涓篛penGL涓婁笅鏂囷紙context锛夈 \ No newline at end of file +OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛侽penGL鐨勭姸鎬侀氬父琚О涓篛penGL涓婁笅鏂囷紙context锛夈傛垜浠氬父浣跨敤濡備笅閫斿緞鍘绘洿鏀筄penGL鐘舵侊細璁剧疆涓浜涢夐」锛屾搷浣滀竴浜涚紦瀛樸傛渶鍚庯紝鎴戜滑浣跨敤褰撳墠OpenGl涓婁笅鏂囨潵娓叉煋銆 + From 2b445607b965f5bf5b3bed9094469a732d5a780e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 20:24:21 +0800 Subject: [PATCH 06/10] add --- 01 Getting started/01 OpenGL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index e7b1434..b35f87e 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -60,3 +60,4 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛侽penGL鐨勭姸鎬侀氬父琚О涓篛penGL涓婁笅鏂囷紙context锛夈傛垜浠氬父浣跨敤濡備笅閫斿緞鍘绘洿鏀筄penGL鐘舵侊細璁剧疆涓浜涢夐」锛屾搷浣滀竴浜涚紦瀛樸傛渶鍚庯紝鎴戜滑浣跨敤褰撳墠OpenGl涓婁笅鏂囨潵娓叉煋銆 +鍋囪褰撴垜浠兂鍛婅瘔OpenGL鍘荤敾绾胯屼笉鏄笁瑙掑舰鐨勬椂鍊欙紝鎴戜滑閫氳繃鏀瑰彉涓浜涗笂涓嬫枃鍙橀噺鏉ユ敼鍙極penGL鐘舵侊紝浠庤屽憡璇塐penGL濡備綍鍘荤粯鍥俱 \ No newline at end of file From 4a105f90ea03a559d8253900d1362001df782ad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 20:35:25 +0800 Subject: [PATCH 07/10] add --- 01 Getting started/01 OpenGL.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index b35f87e..763c4fc 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -60,4 +60,7 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛侽penGL鐨勭姸鎬侀氬父琚О涓篛penGL涓婁笅鏂囷紙context锛夈傛垜浠氬父浣跨敤濡備笅閫斿緞鍘绘洿鏀筄penGL鐘舵侊細璁剧疆涓浜涢夐」锛屾搷浣滀竴浜涚紦瀛樸傛渶鍚庯紝鎴戜滑浣跨敤褰撳墠OpenGl涓婁笅鏂囨潵娓叉煋銆 -鍋囪褰撴垜浠兂鍛婅瘔OpenGL鍘荤敾绾胯屼笉鏄笁瑙掑舰鐨勬椂鍊欙紝鎴戜滑閫氳繃鏀瑰彉涓浜涗笂涓嬫枃鍙橀噺鏉ユ敼鍙極penGL鐘舵侊紝浠庤屽憡璇塐penGL濡備綍鍘荤粯鍥俱 \ No newline at end of file +鍋囪褰撴垜浠兂鍛婅瘔OpenGL鍘荤敾绾胯屼笉鏄笁瑙掑舰鐨勬椂鍊欙紝鎴戜滑閫氳繃鏀瑰彉涓浜涗笂涓嬫枃鍙橀噺鏉ユ敼鍙極penGL鐘舵侊紝浠庤屽憡璇塐penGL濡備綍鍘荤粯鍥俱備竴鏃︽垜浠敼鍙樹簡OpenGL鐨勭姸鎬佷负缁樺埗绾挎锛屼笅涓涓粯鍒跺懡浠ゅ氨浼氱敾鍑虹嚎娈佃屼笉鏄笁瑙掑舰銆 + +鐢∣penGL宸ヤ綔鏃讹紝鎴戜滑浼氶亣鍒颁竴浜涙敼鍙極penGL宸ヤ綔鐘舵佺殑鍑芥暟锛坰tate-changing function锛夛紝浠ュ強涓浜涘湪杩欎簺鐘舵佺殑鍩虹涓婃墽琛屾搷浣滅殑鍑芥暟锛坰tate-using function锛夈傚彧瑕佷綘璁颁綇OpenGL鏈川涓婃槸涓ぇ鐘舵佹満锛屽氨鑳芥洿瀹规槗鐞嗚В瀹冪殑澶ч儴鍒嗙壒鎬с + From 76ffb902cee4392dee06c118b14a804589a2ceef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 20:38:50 +0800 Subject: [PATCH 08/10] add --- 01 Getting started/01 OpenGL.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index 763c4fc..90bbcb2 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -64,3 +64,9 @@ OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑 鐢∣penGL宸ヤ綔鏃讹紝鎴戜滑浼氶亣鍒颁竴浜涙敼鍙極penGL宸ヤ綔鐘舵佺殑鍑芥暟锛坰tate-changing function锛夛紝浠ュ強涓浜涘湪杩欎簺鐘舵佺殑鍩虹涓婃墽琛屾搷浣滅殑鍑芥暟锛坰tate-using function锛夈傚彧瑕佷綘璁颁綇OpenGL鏈川涓婃槸涓ぇ鐘舵佹満锛屽氨鑳芥洿瀹规槗鐞嗚В瀹冪殑澶ч儴鍒嗙壒鎬с +##瀵硅薄锛圤bject锛 + +OpenGL搴撴槸鐢–鍐欑殑锛屽悓鏃朵篃鏀寔澶氱璇█鐨勬淳鐢燂紝浣嗘槸鏍稿績鏄竴涓狢搴撱備竴浜汣璇█鐨勭粨鏋勪笉鏄撹缈昏瘧鍒板叾浠栭珮灞傝瑷锛屽洜姝penGL璁捐鐨勬椂鍊欏紩鍏ヤ簡涓浜涙娊璞℃蹇点傗滃璞♀濆氨鏄叾涓竴涓 + +鍦∣penGL涓竴涓璞℃槸鎸囦竴浜涢夐」鐨勯泦鍚堬紝浠h〃OpenGL鐘舵佺殑涓涓瓙闆嗐傛瘮濡傦紝鎴戜滑鍙互鏈変竴涓璞℃潵浠h〃缁樺浘绐楀彛鐨勮缃紝鍙互璁剧疆瀹冪殑澶у皬銆佹敮鎸佺殑棰滆壊浣嶆暟绛夌瓑銆傚彲浠ユ妸瀵硅薄鐪嬪仛涓涓狢椋庢牸鐨勭粨鏋勪綋锛 + From a9e990983887579dd8d45e8c17cfbe2edf395458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 20:40:15 +0800 Subject: [PATCH 09/10] add --- 01 Getting started/01 OpenGL.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index 90bbcb2..296285d 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -70,3 +70,11 @@ OpenGL搴撴槸鐢–鍐欑殑锛屽悓鏃朵篃鏀寔澶氱璇█鐨勬淳鐢燂紝浣嗘槸鏍稿績鏄 鍦∣penGL涓竴涓璞℃槸鎸囦竴浜涢夐」鐨勯泦鍚堬紝浠h〃OpenGL鐘舵佺殑涓涓瓙闆嗐傛瘮濡傦紝鎴戜滑鍙互鏈変竴涓璞℃潵浠h〃缁樺浘绐楀彛鐨勮缃紝鍙互璁剧疆瀹冪殑澶у皬銆佹敮鎸佺殑棰滆壊浣嶆暟绛夌瓑銆傚彲浠ユ妸瀵硅薄鐪嬪仛涓涓狢椋庢牸鐨勭粨鏋勪綋锛 +```c++ + struct object_name { + GLfloat option1; + GLuint option2; + GLchar[] name; + }; +``` + From 5ac42f9c2438e0d41f82a904463b6e7b167aaaff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?gjy=5F=E7=AE=A1?= Date: Mon, 15 Jun 2015 21:37:09 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E8=8A=82=E6=90=9E?= =?UTF-8?q?=E5=AE=9A=E5=91=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 01 Getting started/01 OpenGL.md | 59 ++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index 296285d..4cd6cf8 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -5,7 +5,7 @@ 鏈炕璇戝畬鎴... --- -鍦ㄨ繘琛岃繖娈垫梾绋嬩箣鍓嶆垜浠厛瑙i噴涓婳penGL鍒板簳鏄粈涔堛傚畠涓鑸璁や负鏄竴涓簲鐢ㄧ▼搴忕紪绋嬫帴鍙o紙API锛夛紝鍖呭惈浜嗕竴绯诲垪鍙互鎿嶄綔鍥惧舰銆佺敾鍍忕殑鏂规硶銆傜劧鑰岋紝OpenGL鏈韩骞朵笉鏄竴涓狝PI锛屼粎浠呮槸涓涓鑼冿紝鐢盵Khronos缁勭粐](http://www.khronos.org/)鍒跺畾骞剁淮鎶ゃ +鍦ㄨ繘琛岃繖娈垫梾绋嬩箣鍓嶆垜浠厛瑙i噴涓婳penGL鍒板簳鏄粈涔堛傚畠涓鑸璁や负鏄竴涓**搴旂敤绋嬪簭缂栫▼鎺ュ彛**锛圓PI锛夛紝鍖呭惈浜嗕竴绯诲垪鍙互鎿嶄綔鍥惧舰銆佺敾鍍忕殑鏂规硶銆傜劧鑰岋紝OpenGL鏈韩骞朵笉鏄竴涓狝PI锛屼粎浠呮槸涓涓鑼冿紝鐢盵Khronos缁勭粐](http://www.khronos.org/)鍒跺畾骞剁淮鎶ゃ OpenGL瑙勮寖涓ユ牸瑙勫畾浜嗘瘡涓嚱鏁拌濡備綍鎵ц锛屼互鍙婂畠浠濡備綍杩斿洖銆傝嚦浜庡唴閮ㄥ叿浣撴瘡涓嚱鏁版槸濡備綍瀹炵幇鐨勶紝灏嗙敱openGL搴撶殑寮鍙戣呰嚜琛屽喅瀹氾紙娉細杩欓噷寮鍙戣呮槸鎸囩紪鍐橭penGL搴撶殑浜猴級銆傚洜涓篛penGL瑙勮寖骞舵病鏈夎瀹氬疄鐜扮殑缁嗚妭锛屽叿浣撶殑OpenGL搴撳厑璁镐娇鐢ㄤ笉鍚岀殑瀹炵幇锛屽彧瑕佸叾鍔熻兘鍜岀粨鏋滀笌瑙勮寖鐩稿尮閰嶏紙浜﹀嵆锛屼綔涓虹敤鎴蜂笉浼氭劅鍙楀埌鍔熻兘涓婄殑宸紓锛夈 @@ -46,11 +46,11 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 ```c++ if(GL_ARB_extension_name) { - // Do cool new and modern stuff supported by hardware + // 浣跨敤涓浜涙柊鐨勭壒鎬 } else { - // Extension not supported: do it the old way + // 涓嶆敮鎸佹鎵╁睍: 鐢ㄦ棫鐨勬柟寮忓幓鍋 } ``` @@ -58,11 +58,11 @@ OpenGL鐨勪竴澶х壒鎬у氨鏄鎵╁睍鐨勬敮鎸侊紝褰撲竴涓樉鍗″叕鍙告彁鍑轰竴 ##鐘舵佹満 -OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛侽penGL鐨勭姸鎬侀氬父琚О涓篛penGL涓婁笅鏂囷紙context锛夈傛垜浠氬父浣跨敤濡備笅閫斿緞鍘绘洿鏀筄penGL鐘舵侊細璁剧疆涓浜涢夐」锛屾搷浣滀竴浜涚紦瀛樸傛渶鍚庯紝鎴戜滑浣跨敤褰撳墠OpenGl涓婁笅鏂囨潵娓叉煋銆 +OpenGL鑷韩鏄竴涓法澶х殑鐘舵佹満锛氫竴涓弿杩癘penGL璇ュ浣曟搷浣滅殑鎵鏈夊彉閲忕殑澶ч泦鍚堛侽penGL鐨勭姸鎬侀氬父琚О涓篛penGL**涓婁笅鏂**锛坈ontext锛夈傛垜浠氬父浣跨敤濡備笅閫斿緞鍘绘洿鏀筄penGL鐘舵侊細璁剧疆涓浜涢夐」锛屾搷浣滀竴浜涚紦瀛樸傛渶鍚庯紝鎴戜滑浣跨敤褰撳墠OpenGl涓婁笅鏂囨潵娓叉煋銆 鍋囪褰撴垜浠兂鍛婅瘔OpenGL鍘荤敾绾胯屼笉鏄笁瑙掑舰鐨勬椂鍊欙紝鎴戜滑閫氳繃鏀瑰彉涓浜涗笂涓嬫枃鍙橀噺鏉ユ敼鍙極penGL鐘舵侊紝浠庤屽憡璇塐penGL濡備綍鍘荤粯鍥俱備竴鏃︽垜浠敼鍙樹簡OpenGL鐨勭姸鎬佷负缁樺埗绾挎锛屼笅涓涓粯鍒跺懡浠ゅ氨浼氱敾鍑虹嚎娈佃屼笉鏄笁瑙掑舰銆 -鐢∣penGL宸ヤ綔鏃讹紝鎴戜滑浼氶亣鍒颁竴浜涙敼鍙極penGL宸ヤ綔鐘舵佺殑鍑芥暟锛坰tate-changing function锛夛紝浠ュ強涓浜涘湪杩欎簺鐘舵佺殑鍩虹涓婃墽琛屾搷浣滅殑鍑芥暟锛坰tate-using function锛夈傚彧瑕佷綘璁颁綇OpenGL鏈川涓婃槸涓ぇ鐘舵佹満锛屽氨鑳芥洿瀹规槗鐞嗚В瀹冪殑澶ч儴鍒嗙壒鎬с +鐢∣penGL宸ヤ綔鏃讹紝鎴戜滑浼氶亣鍒颁竴浜**鏀瑰彉OpenGL宸ヤ綔鐘舵佺殑鍑芥暟**锛坰tate-changing function锛夛紝浠ュ強涓浜涘湪杩欎簺鐘舵佺殑鍩虹涓**鎵ц鎿嶄綔鐨勫嚱鏁**锛坰tate-using function锛夈傚彧瑕佷綘璁颁綇OpenGL鏈川涓婃槸涓ぇ鐘舵佹満锛屽氨鑳芥洿瀹规槗鐞嗚В瀹冪殑澶ч儴鍒嗙壒鎬с ##瀵硅薄锛圤bject锛 @@ -78,3 +78,52 @@ OpenGL搴撴槸鐢–鍐欑殑锛屽悓鏃朵篃鏀寔澶氱璇█鐨勬淳鐢燂紝浣嗘槸鏍稿績鏄 }; ``` +
+鍘熷绫诲瀷 +
+浣跨敤OpenGL鏃讹紝寤鸿浣跨敤OpenGL瀹氫箟鐨勫師濮嬬被鍨嬨傛瘮濡備娇鐢╢loat鏃舵垜浠姞涓婂墠缂GL锛堝洜姝ゅ啓浣淕Lfloat锛夈俰nt锛寀int锛宑har锛宐ool绛夌瓑绫讳技銆侽penGL瀹氫箟浜嗚繖浜汫L鍘熷绫诲瀷鐨勫钩鍙版棤鍏崇殑鍐呭瓨鎺掑垪鏂瑰紡銆傝宨nt绛夊師濮嬬被鍨嬪湪涓嶅悓骞冲彴涓婂彲鑳芥湁涓嶅悓鐨勫唴瀛樻帓鍒楁柟寮忋備娇鐢℅L鍘熷绫诲瀷鍙互淇濊瘉浣犵殑绋嬪簭鍦ㄤ笉鍚岀殑骞冲彴涓婂伐浣滀竴鑷淬 +
+ + +褰撴垜浠娇鐢ㄤ竴涓璞℃椂锛岄氬父鐪嬭捣鏉ュ儚濡備笅涓鏍凤紙鎶奜penGL涓婁笅鏂囨瘮浣滀竴涓ぇ鐨勭粨鏋勪綋锛夛細 + +```c++ + // OpenGL鐘舵 + struct OpenGL_Context { + ... + object* object_Window_Target; + ... + }; +``` + +```c++ + // 鍒涘缓涓涓璞 + GLuint objectId = 0; + glGenObject(1, &objectId); + // 缁戝畾瀵硅薄鑷充笂涓嬫枃 + glBindObject(GL_WINDOW_TARGET, objectId); + // 璁剧疆GL_WINDOW_TARGET瀵硅薄鐨勪竴浜涢夐」 + glSetObjectOption(GL_WINDOW_TARGET, GL_OPTION_WINDOW_WIDTH, 800); + glSetObjectOption(GL_WINDOW_TARGET, GL_OPTION_WINDOW_HEIGHT, 600); + // 灏嗕笂涓嬫枃鐨凣L_WINDOW_TARGET瀵硅薄璁惧洖榛樿 + glBindObject(GL_WINDOW_TARGET, 0); +``` + +杩欎竴灏忕墖浠g爜灏嗕細鏄互鍚庝娇鐢∣penGl鏃跺父瑙佺殑宸ヤ綔娴併傛垜浠鍏堝垱寤轰竴涓璞★紝鐒跺悗鐢ㄤ竴涓猧d淇濆瓨瀹冪殑寮曠敤锛堝疄闄呮暟鎹鍌ㄥ瓨鍦ㄥ悗鍙帮級銆傜劧鍚庢垜浠皢瀵硅薄缁戝畾鑷充笂涓嬫枃鐨勭洰鏍囦綅缃紙渚嬪瓙閲岀獥鍙e璞$殑鐩爣浣嶇疆琚畾涔夋垚GL\_WINDOW\_TARGET锛夈傛帴涓嬫潵鎴戜滑璁剧疆绐楀彛鐨勯夐」锛屾渶鍚庢垜浠В缁戣繖涓璞★紝閫氳繃灏嗙洰鏍囦綅缃殑瀵硅薄id璁惧洖0銆傛垜浠缃殑閫夐」琚繚瀛樺湪objectId浠h〃鐨勫璞′腑锛屼竴鏃︽垜浠噸鏂扮粦瀹氳繖涓璞″埌GL\_WINDOW\_TARGET浣嶇疆锛岃繖浜涢夐」灏变細閲嶆柊鐢熸晥銆 + + +
+鐩墠鎻愪緵鐨勭ず渚嬩唬鐮佸彧鏄疧penGL濡備綍鎿嶄綔鐨勪竴涓ぇ鑷存弿杩帮紝閫氳繃鏁欑▼浣犱細閬囧埌寰堝瀹為檯鐨勪緥瀛愩 +
+ + +浣跨敤瀵硅薄鐨勪竴涓ソ浜嬫槸鎴戜滑鍦ㄧ▼搴忎腑鍙互瀹氫箟涓嶆涓涓璞★紝璁剧疆浠栦滑鐨勯夐」锛屽綋鎴戜滑闇瑕佽繘琛屼竴涓搷浣滅殑鏃跺欙紝鍙渶瑕佺粦瀹氶璁句簡闇瑕佺殑鐘舵佺殑瀵硅薄銆傛瘮濡傦紝鏈変綔涓3D妯″瀷鏁版嵁锛堜竴鏍嬫埧瀛愭垨涓涓汉鐗╋級瀹瑰櫒瀵硅薄鐨勫璞★紝浠讳綍鏃跺欐垜浠兂缁樺埗鍏朵腑涓涓3D妯″瀷鐨勬椂鍊欙紝鍙渶缁戝畾鐩稿簲鐨勫惈妯″瀷鏁版嵁鐨勫璞★紙鎴戜滑棰勫厛鍒涘缓骞惰缃ソ浜嗗畠浠殑閫夐」锛夈傛嫢鏈夋暟涓繖鏍风殑瀵硅薄鍏佽鎴戜滑鎸囧畾澶氫釜妯″瀷锛屽湪鎯崇敾鍏朵腑浠讳綍涓涓殑鏃跺欙紝绠鍗曠殑灏嗙浉搴旂殑瀵硅薄缁戝畾涓婂幓锛屼笉闇瑕佽繘琛岄噸澶嶇殑璁剧疆閫夐」鐨勬搷浣溿 + +##璁╂垜浠紑濮嬪惂 + +浣犵幇鍦ㄥ凡缁忕煡閬撲竴浜汷penGL鐨勭浉鍏崇煡璇嗕簡锛屽寘鎷琌penGL浣滀负瑙勮寖鍜屽簱锛孫penGL澶ц嚧鐨勬搷浣滄祦绋嬶紝浠ュ強涓浜涗娇鐢ㄦ墿灞曠殑灏忔妧宸с備笉瑕佹媴蹇冩病鏈夊畬鍏ㄦ秷鍖栧畠浠紝閫氳繃杩欎釜鏁欑▼鎴戜滑浼氫粩缁嗚瑙f瘡涓姝ワ紝浣犱細閫氳繃瓒冲鐨勪緥瀛愭潵鎶婃彙OpenGL銆傚鏋滀綘宸茬粡鍋氬ソ浜嗕笅涓姝ョ殑鍑嗗锛屾垜浠彲浠ュ紑濮嬪缓绔婳penGL涓婁笅鏂囦互鍙婃垜浠殑绗竴涓獥鍙d簡銆俒鐐瑰嚮杩欓噷](http://www.learnopengl.com/#!Getting-started/Creating-a-window)锛堢涓绔犵浜岃妭锛 + +##棰濆鐨勮祫婧 + +- [opengl.org](https://www.opengl.org/): OpenGL瀹樻柟缃戠珯. +- [OpenGL registry](https://www.opengl.org/registry/): OpenGL鍚勭増鏈殑瑙勮寖鍜屾墿灞曠殑涓荤珯銆 \ No newline at end of file