锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1. OpenGL 娓叉煋綆$嚎 OpenGL娓叉煋綆$嚎鍒嗕負(fù)涓ゅぇ閮ㄥ垎錛?strong>妯″瀷瑙傛祴鍙樻崲(ModelView Transformation)鍜?strong>鎶曞獎(jiǎng)鍙樻崲(Projection Transformation)銆傚仛涓瘮鍠伙紝璁$畻鏈哄浘褰㈠紑鍙戝氨鍍忔垜浠収鐩鎬竴鏍鳳紝鐩殑灝辨槸鎶婄湡瀹炵殑鍦烘櫙鍦ㄤ竴寮犵収鐩哥焊涓婅〃鐜板嚭鏉ャ傞偅涔?strong>瑙傛祴鍙樻崲鐨勮繃紼嬪氨鍍忔槸鎴戜滑鎽嗚鐩告満鐨勪綅緗紝閫夋嫨濂借鐓х殑鐗╀綋錛屾憜濂界墿浣撶殑閫犲瀷銆傝?strong>鎶曞獎(jiǎng)鍙樻崲灝卞儚鐩告満鎶婄湡瀹炵殑涓夌淮鍦烘櫙鏄劇ず鍦ㄧ浉綰?/strong>涓婁竴鏍楓備笅闈㈠氨鍒嗗埆璇︾粏鐨勮涓涓嬭繖涓や釜榪囩▼銆?/p> 1.1妯″瀷瑙傛祴鍙樻崲 璁╂垜浠厛鏉ュ紕娓呮OpenGL涓殑娓叉煋綆$嚎銆傜綰挎槸涓涓娊璞$殑姒傚康錛屼箣鎵浠ョО涔嬩負(fù)綆$嚎鏄洜涓烘樉鍗″湪澶勭悊鏁版嵁鐨勬椂鍊欐槸鎸夌収涓涓浐瀹氱殑欏哄簭鏉ョ殑錛岃屼笖涓ユ牸鎸夌収榪欎釜欏哄簭銆傚氨鍍忔按浠庝竴鏍圭瀛愮殑涓绔祦鍒板彟涓绔紝榪欎釜欏哄簭鏄笉鑳芥墦鐮寸殑銆傚厛鏉ョ湅鐪嬩笅闈㈢殑鍥?錛?/p> 鍥句腑鏄劇ず浜?jiǎn)OpenGL鍥懼艦綆$嚎鐨勪富瑕侀儴鍒嗭紝涔熸槸鎴戜滑鍦ㄨ繘琛屽浘褰㈢紪紼嬬殑鏃跺欏父甯歌鐢ㄥ埌鐨勯儴鍒嗐備竴涓《鐐規(guī)暟鎹粠鍥劇殑宸︿笂瑙?MC)榪涘叆綆$嚎錛屾渶鍚庝粠鍥劇殑鍙充笅瑙?DC)杈撳嚭銆?strong>MC鏄疢odel Coordinate鐨勭畝鍐欙紝琛ㄧず妯″瀷鍧愭爣銆?strong>DC鏄?strong>Device Coordinate鐨勭畝鍐欙紝琛ㄧず璁懼鍧愭爣銆?褰撶劧DC鏈夊緢澶氫簡(jiǎn)錛屼粈涔堟樉紺哄櫒錛屾墦鍗版満絳夌瓑銆傝繖閲孌C鎴戜滑灝辯悊瑙f垚甯歌鐨勫睆騫曞潗鏍囧ソ浜?jiǎn)銆侻C褰撶劧灝辨槸3D鍧愭爣浜?娉ㄦ剰錛氭垜璇寸殑3D鍧愭爣錛岃屼笉鏄笘鐣屽潗 鏍?錛岃繖涓?D鍧愭爣灝辨槸妯″瀷鍧愭爣錛屼篃璇存垚鏈湴鍧愭爣(鐩稿浜庝笘鐣屽潗鏍?銆侻C瑕佺粡榪囨ā鍨嬪彉鎹?Modeling Transformation)鎵嶅彉鎹㈠埌涓栫晫鍧愭爣錛屽浘2錛?/p> 鍙樻崲鍒頒笘鐣屽潗鏍嘩C(World Coordinate)璇寸畝鍗曠偣灝辨槸濡備綍鐢ㄤ笘鐣屽潗鏍囩郴鏉ヨ〃紺烘湰鍦板潗鏍囩郴涓殑鍧愭爣銆備負(fù)浜?jiǎn)璁插緱鏇存竻妤氫竴浜涳紝榪欓噷涓句釜2D鐨勪緥瀛愩傚鍥?錛?/p> 鍥句腑綰㈣壊鍧愭爣緋繪槸涓栫晫鍧愭爣緋籛C錛岀豢鑹茬殑鏄?strong>妯″瀷鍧愭爣緋籑C銆傜幇鍦ㄦ湁涓涓《鐐癸紝鍦ㄦā鍨嬪潗鏍囩郴涓殑鍧愭爣涓?1,1)錛岀幇鍦ㄨ鎶婅繖涓ā鍨嬪潗鏍囪漿鎹㈠埌涓栫晫鍧愭爣涓潵琛ㄧず銆備粠鍥句腑鍙互鐪嬪嚭錛岀偣(1,1)鍦ㄤ笘鐣屽潗鏍囩郴涓殑鍧愭爣涓?3,4)錛岀幇鍦ㄦ垜浠潵閫氳繃璁$畻寰楀埌鎴戜滑甯屾湜鐨勭粨鏋溿傞鍏堟垜浠鎶婃ā鍨嬪潗鏍囩郴MC鍦ㄤ笘鐣屽潗鏍囩郴涓〃紺哄嚭鏉ワ紝浣跨敤榻愭鍧愭爣(Homogeneous Coordinate )鍙互琛ㄧず涓虹煩闃?娉ㄦ剰錛屾湰鏁欑▼涓嬌鐢ㄧ殑鐭╅樀閮芥槸浠ュ垪鍚戦噺緇勬垚)錛?a > 鏉ョ湅鐪婱C鍧愭爣涓殑鐐?1,1)濡備綍鍦ㄧ浉鏈哄潗鏍囦腑琛ㄧず銆備粠鍥?涓彲浠ョ洿鎺ョ湅鍑篗C涓殑鐐?1,1)鍦ㄧ浉鏈哄潗鏍囩郴VC涓負(fù)(-2,-2)銆傚拰涓婇潰鍚屾牱鐨勯亾鐞嗭紝鎴戜滑鍙互鍐欏嚭鐩告満鍧愭爣緋籚C鍦ㄤ笘鐣屾爣緋籛C涓彲浠ヨ〃紺轟負(fù)錛?/p> 鏍規(guī)嵁鍥句腑鐨勬暟鎹紝鎴戜滑鍒嗗埆鍙互鍐欏嚭瀵瑰簲MC鍜孷C-1錛屼粠鑰屾眰寰?strong>瑙傛祴鍙樻崲鐭╅樀M銆?/p> 濡傛灉鍦ㄤ笂闈㈢▼搴忔涓渶鍚庝竴涓?strong>glGetFloatv(GL_MODELVIEW_MATRIX, m)澶勮瀹氭柇鐐圭殑璇濓紝灝卞彲浠ョ湅鍒板浘7鎵鏄劇ず鐨勬暟鎹?/p> 鍒拌繖閲岋紝鏁翠釜ModelView鍙樻崲灝卞畬鎴愪簡(jiǎn)銆傞氳繃ModelView鍙樻崲鍚庡緱鍒版槸鐩告満鍧愭爣緋誨唴鐨勫潗鏍囥傚湪榪欎釜鍧愭爣緋誨唴鍏稿瀷鐨勮綆楀氨鏄硶綰夸簡(jiǎn)銆傜幇鍦ㄥ啀鏉ョ湅鐪嬪悗闈竴涓樁孌點(diǎn)?/p> 1.2鎶曞獎(jiǎng)鍙樻崲 鍏堣繕鏄涔?fàn)涓涓婳penGL鐨勬覆鏌撶綰褲傚浘1涓彲浠ョ湅鍒幫紝鍦?strong>鎶曞獎(jiǎng)鍙樻崲(Projection Transformation)涓篃鍒嗕負(fù)涓や釜閮ㄥ垎錛岀涓涓儴鍒嗘槸灝嗕笂涓樁孌靛緱鍒扮殑鍧愭爣杞崲涓哄鉤闈㈠潗鏍?/strong>錛岀浜屼釜閮ㄥ垎鏄皢杞崲鍚庣殑騫抽潰鍧愭爣鍦ㄨ繘琛屽綊涓鍖栧茍榪涜鍓銆備竴鑸湴錛屽皢涓夌淮鍧愭爣杞崲涓哄鉤闈㈠潗鏍囨湁涓ょ鎶曞獎(jiǎng)鏂瑰紡錛?strong>姝d氦鎶曞獎(jiǎng)(Orthogonal Projection)鍜岄忚鎶曞獎(jiǎng)(Perspective Projection)銆?/p> 1.2.1 姝d氦鎶曞獎(jiǎng) 姝d氦鎶曞獎(jiǎng)寰堢畝鍗曪紝濡傚浘8錛屽浜庝笁緇寸┖闂翠腑鐨勫潗鏍囩偣鍜屼竴涓簩緇村鉤闈紝瑕佸湪瀵瑰簲鐨勫鉤闈笂鎶曞獎(jiǎng)錛屽彧闇灝嗛潪璇ュ鉤闈笂鐨勭偣鐨勫潗鏍囧垎閲忔敼涓鴻騫抽潰涓婄殑鍧愭爣鍊鹼紝鍏朵綑鍧愭爣涓嶅彉銆?/p> 姣斿灝嗙偣(1,1,5)姝d氦鎶曞獎(jiǎng)鍒皕=0鐨勫鉤闈笂錛岄偅涔堟姇褰卞悗鐨勫潗鏍囦負(fù)(1,1,0)銆傚湪openGL涓紝璁劇疆姝d氦鎶曞獎(jiǎng)鍙互浣跨敤鍑芥暟: 璇ュ嚱鏁板彲浠ヨ緗浜ゆ姇褰辯殑鎶曞獎(jiǎng)絀洪棿錛屽湪璇ョ┖闂翠互澶栫殑鍧愭爣鐐瑰氨涓嶄細(xì)琚姇褰卞埌鎶曞獎(jiǎng)騫抽潰涓娿傚嚱鏁頒腑鐨勫叚涓弬鏁板垎鏄姇褰辯┖闂村叚涓鉤闈紝濡傚浘9: 鍥? OpenGL姝d氦鎶曞獎(jiǎng)絀洪棿鍜屾姇褰卞彉鎹?/strong> 鍦ㄥ浘9涓紝澶х殑鎶曞獎(jiǎng)絀洪棿鏄牴鎹繖鍏釜鍙傛暟璁劇疆鐨勬姇褰辯┖闂達(dá)紝OpenGL浼?xì)鑷姩灏嗚绌洪棿褰掍竴鍖栵紝涔熷氨鏄皢璇ョ┖闂存垨绔嬫柟浣撹漿鍖栦負(fù)鍙橀暱涓?鐨勬鍏潰浣撴姇褰?絀洪棿錛屽茍涓旇璇佸叚闈綋鐨勪腑蹇?jī)鍦ㄧ浉鏈哄潗鏍嚲p葷殑鍘熺偣銆備竴鏃﹁緗嬌鐢╣lortho鍑芥暟璁劇疆鎶曞獎(jiǎng)絀洪棿錛孫penGL浼?xì)鐢熸垚鎶曞睫q煩闃點(diǎn)傝繖涓煩闃電殑浣滅敤灝辨槸灝嗗潗鏍囪繘 琛屾浜ゆ姇褰卞茍涓斿皢鎶曞獎(jiǎng)鍚庣殑鍧愭爣姝h鍖?杞崲鍒?1鍒?涔嬮棿)銆傝娉ㄦ剰鐨勬槸錛岀敓鎴愯鐭╅樀鐨勬椂鍊欙紝OpenGL浼?xì)鎶婂徬x墜鍧愭爣緋昏漿鎹負(fù)宸︽墜鍧愭爣緋匯傚師鍥犲緢綆鍗曪紝 鍙蟲墜鍧愭爣緋葷殑Z杞村悜騫抽潰澶栫殑錛岃繖鏍蜂笉絎﹀悎鎴戜滑鐨勪範(fàn)鎯傝鐭╅樀鐨勭煩闃墊帹瀵艱繖閲屽氨涓嶈緇嗚鏄庝簡(jiǎn)錛屼笉浜?jiǎn)瑙g殑鍚屽鍙互鍙傝冩父鎴忔暟瀛︽柟闈㈣祫鏂欙紝榪欓噷鍙粰鍑烘浜ゆ姇褰辯煩 闃點(diǎn)?/p> 1.2.2閫忚鎶曞獎(jiǎng) 閫忚鎶曞獎(jiǎng)鍜屾浜ゆ姇褰辨渶澶х殑鍖哄埆灝辨槸閫忚鎶曞獎(jiǎng)鍏鋒湁榪滆繎鎰熴?/p> 鍥?1 閫忚鎶曞獎(jiǎng) 閫忚鎶曞獎(jiǎng)閲囩敤浜?jiǎn)鍥?1涓殑妯″瀷錛岃繖鏍風(fēng)殑妯″瀷灝辨槸淇濊瘉榪滅殑鐗╀綋鐪嬭搗鏉ュ皬錛岃繎鐨勭墿浣撶湅璧鋒潵澶с?鍦∣penGL涓緗忚鎶曞獎(jiǎng)鍙互浣跨敤鍑芥暟: 璇ュ嚱鏁頒篃浼?xì)鏍规嵁缁欏畾鐨勫弬鏁扮敓鎴愪竴涓姇褰辯┖闂淬傚鍥?1涓紝璇ユ姇褰辯┖闂存槸涓涓埅澶翠綋銆傚悓鏍峰湴錛孫penGL浼?xì)鑷姩鐢熸垚閫忚鎶曞獎(jiǎng)鐭╅樀錛岃鐭╅樀涔熶細(xì)璁?D鍧愭爣鎶曞獎(jiǎng)鍦ㄦ姇褰卞鉤闈笂錛屽茍涓斿皢鎶曞獎(jiǎng)鍚庣殑鍧愭爣涔熻繘琛屾瑙勫寲銆備笅闈篃鐩存帴緇欏嚭OpenGL涓嬌鐢ㄧ殑閫忚鎶曞獎(jiǎng)鐭╅樀銆?/p> 璁劇疆鏂偣鍚庯紝鎴戜滑鍙互鐪嬪埌鍥?2涓樉紺虹殑鏁版嵁銆?/p> 鍒版涓烘錛屾暣涓姇褰卞彉鎹㈠氨瀹屾垚浜?jiǎn)銆傞忚繃鎶曞獎(jiǎng)鍙樻崲鍚庡緱鍒扮殑鏄瑙勫寲鐨勬姇褰卞鉤闈㈠潗鏍囥傝繖涓轟笅涓涓樁孌電殑瑙嗗彛鍙樻崲(View port Transformation)鍋氬ソ浜?jiǎn)鍑嗗銆? 1.3瑙嗗彛鍙樻崲 鐜板湪鍒頒簡(jiǎn)鏈鍚庝竴涓樁孌典簡(jiǎn)銆傝繖涓樁孌靛彨鍋氳鍙e彉鎹紝瀹冩妸涓婁釜闃舵寰楀埌鐨勬瑙勫寲鐨勬姇褰卞潗鏍囪漿鍖栦負(fù)windows 紿楀彛鍧愭爣銆傝鍙e彉鎹細(xì)灝嗘姇褰卞鉤闈笂鐨勭敾闈㈡槧灝勫埌紿楀彛涓娿傚湪OpenGL涓彲浠ヤ嬌鐢ㄥ嚱鏁?/p> 鏉ヨ繘琛屽紿楀彛鐨勬槧灝勶紝濡傚浘13銆?/p> 涓句釜渚嬪瓙璇存槑錛屾瘮濡備笂涓樁孌典腑寰楀埌浜?jiǎn)涓涓《鐐圭殑鍧愭爣涓?0,0,0.5,1)錛屾牴鎹繖涓潗鏍囷紝璇ラ《鐐逛綅浜庢姇褰卞鉤闈㈢殑姝d腑闂淬傚鏋滃皢璇ョ偣鏄犲皠鍒板ぇ灝忎負(fù) 50*50鐨勭獥鍙d笂鏃訛紝閭d箞瀹冨簲璇ヤ綅浜庡睆騫曠殑涓棿錛屽潗鏍囦負(fù)(25,25, 0.5,1)銆傚綋鐒惰繖閲屾繁搴﹀?.5鏄笉浼?xì)鏀瑰彉鐨勩傛湁鐨勫悓瀛﹁偗瀹氭湁鐤戦棶浜?jiǎn)锛屾棦鐒舵姇濯?jiǎng)鍒頒簡(jiǎn)紿楀彛涓婏紝閭d箞榪樿娣卞害鍊?.5騫蹭粈涔堬紵榪欓噷瑕佹敞鎰忕殑鏄紝铏界劧鍦ㄧ獥鍙?涓婃樉紺烘椂鍙渶瑕亁錛寉鍧愭爣灝卞浜?jiǎn)锛屼絾鏄鍦?D紿楀彛涓婃樉紺?D鍥懼艦鏃舵繁搴﹀兼槸涓嶅彲灝戠殑銆傝繖閲岀殑娣卞害鍊間笉鏄敤浜庢樉紺猴紝鑰屾槸鐢ㄤ簬鍦ㄥ厜鏍呭寲鐨勬椂鍊欒繘琛屾繁搴︽祴璇曘?/p> OpenGL涔熶細(xì)鏍規(guī)嵁glViewport鍑芥暟鎻愪緵鐨勫弬鏁板肩敓鎴愪竴涓鍙e彉鎹㈢煩闃?/p> 2. 灞忓箷鍧愭爣杞崲涓轟笘鐣屽潗鏍?/strong> 閫氳繃鍓嶉潰鐨勬暀紼嬶紝浠ュ強(qiáng)鐜板湪澶у瀵筄penGL鏁翠釜娓叉煋綆$嚎鐞嗚В鍚庯紝鐜板湪瑕佸皢灞忓箷涓婁竴鐐瑰潗鏍囪漿鎹負(fù)涓栫晫鍧愭爣灝辨瘮杈冨鏄撲簡(jiǎn)銆備粠鍥懼艦綆$嚎鐨勫紑濮嬪埌緇撴潫錛屼竴 涓ā鍨嬪潗鏍囩郴涓殑鍧愭爣琚漿鍖栦負(fù)浜?jiǎn)灞忩q曞潗鏍囷紝閭d箞鐜板湪鎶婃暣涓繃紼嬪掕繃鏉ョ殑璇濓紝灞忓箷涓婁竴鐐瑰潗鏍囦篃鍙互杞負(fù)涓轟笘鐣屽潗鏍囥傚彧瑕佸湪瀵瑰簲鐨勯樁孌墊眰寰楀搴斿彉鎹㈢煩闃電殑閫嗙煩 闃碉紝灝卞彲浠ュ緱鍒板墠涓涓樁孌電殑鍧愭爣銆傝繖鏁翠釜榪囩▼鍙互鐢ㄥ浘14琛ㄧず銆?/p> 鍥句腑鏄劇ず鐨勮繃紼嬪畬鍏ㄥ氨鏄疧penGL娓叉煋綆$嚎鐨勯嗚繃紼嬶紝閫氳繃榪欎釜榪囩▼錛屽睆騫曚笂鐨勭偣灝卞彲浠ヨ漿鍖栦負(fù)涓栫晫鍧愭爣緋諱腑鐨勭偣浜?jiǎn)銆傚彲鑳藉張鏈夌殑鍚屽瑕侀棶錛屽綋榧犳爣鐐瑰嚮灞忓箷涓婁竴鐐圭殑鏃跺欏茍娌℃湁娣卞害淇℃伅錛岃漿鎹㈢殑鏃跺欒鎬庝箞鍔炲憿錛熻繖涓椂鍊欏彲浠ヤ嬌鐢∣penGL鍑芥暟 璇ュ嚱鏁拌兘澶熻幏寰楀睆騫曚笂涓鐐瑰搴斿儚绱犵殑娣卞害淇℃伅銆傛湁浜?jiǎn)杩欎釜娣卞害淇℃伅锛尀鍙互鍒╃敤涓婇潰杩嚱E嬫妸灞忓箷涓婁竴鐐硅漿鎹負(fù)涓栫晫鍧愭爣浜?jiǎn)銆傚湪OpenGL涓紝涓婇潰鐨勮繃紼嬪叾瀹炲凡緇忔湁鐜版垚鐨勫嚱鏁板彲浠ヤ嬌鐢紝閭e氨鏄?/p> 璇ュ嚱鏁扮洿鎺ュ皢灞忓箷涓婁竴鐐硅漿鎹㈠搴旂殑涓栫晫鍧愭爣錛岃鍑芥暟鐨勫唴閮ㄥ疄鐜板叾瀹炶繕鏄笂闈㈢殑閭d箞閫嗚繃紼嬨備笅闈㈢粰鍑哄埄鐢ㄨ鍑芥暟鑾峰彇涓栫晫鍧愭爣鐨勪唬鐮佹銆?/p> 鍏朵腑錛岀煩闃電殑絎竴鍒椾負(fù)MC涓瓁杞村湪WC涓殑鍚戦噺琛ㄧず錛?strong>絎簩鍒椾負(fù)MC涓瓂杞碬C涓殑鍚戦噺琛ㄧず錛?strong>絎笁鍒椾負(fù)MC涓殑鍘熺偣鍦╓C涓殑鍧愭爣銆傚榻愭鍧愭爣緋諱笉浜?jiǎn)瑙g殑鍚屽锛岃鍏堝涔?fàn)娓告垙鏁板鏂歸潰鐨勭煡璇嗐傛湁浜?jiǎn)杩欎釜妯″瀷鍙樻崲鐭╅樀鍚庡Q岀敤榪欎釜鐭╅樀涔樹互鍦∕C涓〃紺虹殑鍧愭爣灝卞彲浠ュ緱鍒拌鍧愭爣鍦ㄤ笘鐣屽潗鏍囩郴涓殑鍧愭爣銆傛墍浠ヨ鐭╅樀鍜孧C涓殑鍧愭爣(1,1)鐩鎬箻鏈?
榪欎篃姝f槸鎴戜滑闇瑕佺殑緇撴灉銆傜幇鍦ㄨ鎴戜滑鎶婄浉鏈哄潗鏍囦篃鍔犺繘鍘伙紝鐩告満鍧愭爣涔熺О涓鴻嫻嬪潗鏍?View Coordinate)錛屽鍥?鍜屽浘5銆?/p>
閭d箞涓栫晫鍧愭爣緋諱腑鐨勭偣杞崲涓虹浉鏈哄潗鏍囩郴涓殑鐐規(guī)垜浠氨闇姹俈C鐨勯嗙煩闃碉細(xì)
閭d箞涓栫晫鍧愭爣緋籛C涓殑鐐?3,4)鍦ㄧ浉鏈哄潗鏍囩郴VC涓潗鏍囦負(fù)錛?
涓婇潰鐨勫彉鎹㈣繃紼嬶紝灝辨槸鍙互鎶?strong>妯″瀷鍧愭爣鍙樻崲涓虹浉鏈哄潗鏍?/strong>銆傚湪OpenGL涓紝褰撴垜浠敵鏄庨《鐐圭殑鏃跺欙紝鏈夋椂鍊欒鐨勬槸涓栫晫鍧愭爣錛岃繖鏄洜涓哄垵濮嬪寲鐨勬椂鍊欎笘鐣屽潗鏍囩郴銆佹ā鍨嬪潗鏍囩郴鍜岀浉鏈哄潗鏍囩郴鏄竴鏍風(fēng)殑錛岄噸鍚堝湪涓璧風(fēng)殑銆傛墍浠penGL涓彁渚涗簡(jiǎn)妯″瀷瑙傛祴鍙樻崲錛屽畠鏄妸妯″瀷鍧愭爣緋葷洿鎺ヨ漿鎹負(fù)鐩告満鍧愭爣緋伙紝濡傚浘4銆傜幇鍦ㄦ垜浠凡緇忚綆楀緱鍒頒簡(jiǎn)VC-1鍜孧C錛屽鏋滄妸VC-1鍜?MC鐩鎬箻錛屽氨鍙互寰楀埌妯″瀷鍧愭爣鍦ㄧ浉鏈哄潗鏍囦腑鐨勮〃紺恒備負(fù)浜?jiǎn)寰楀埌妯″瀷鍧愭爣绯讳腑鐨勫潗鏍囧湪鐩告満鍧愭爣绯讳腑鐨勮〃绀哄Q岃繖灝辨槸OpenGL涓殑ModelView鍙樻崲鐭?闃點(diǎn)傝繖涔熸槸ModelView鍙樻崲鐨勫悕瀛楃殑鐢辨潵錛屽畠鏄氳繃浜?jiǎn)涓婇潰涓や釜姝ラ寰楀埌鐨勩傞偅涔堣繖閲岋紝ModelView鍙樻崲鐭╅樀M涓猴細(xì)
鐜板湪鍙鐢ㄤ笂闈㈢殑妯″瀷瑙傛祴鐭╅樀M涔樹互妯″瀷鍧愭爣緋籑C涓殑鍧愭爣灝卞彲浠ュ緱鍒扮浉鏈哄潗鏍囩郴涓殑鍧愭爣浜?jiǎn)銆傛ā鍨嬭嫻嬪彉鎹㈢殑鍏抽敭灝辨槸瑕佸緱鍒扮浉鏈哄潗鏍囩郴涓殑鍧愭爣錛屽洜涓哄厜鐓х瓑璁$畻閮芥槸鍦ㄨ繖涓繖涓潗鏍囩郴涓畬鎴愮殑銆備笅闈㈡垜浠疄闄匫penGL紼嬪簭涓鏌ヤ竴涓嬨傚湪紼嬪簭涓紝涓轟簡(jiǎn)璁$畻鏂逛究錛屾垜浠嬌鐢ㄥ浘6涓殑妯″瀷銆?/p>
鐜板湪紼嬪簭涓敤glGetFloatv()榪欎釜鍑芥暟鏉ヨ幏寰楀綋鍓嶇煩闃墊暟鎹潵媯(gè)鏌ヤ竴涓嬨?/p>
榪欎釜鐭╅樀鐪嬫潵寰堝鏉傦紝鍏跺疄璁$畻寰堢畝鍗曘備婦涓緥瀛愶紝鐜板湪璁劇疆浜?jiǎn)杩欐狅L(fēng)殑姝d氦鎶曞獎(jiǎng)絀洪棿glOrtho(-10,10,-10,10,-10,10)錛岃繖鏄釜姝e叚闈綋絀洪棿錛屽彉闀夸負(fù)10銆傛妸榪欎簺鍙傛暟甯﹀叆涓婇潰鐨勭煩闃靛彲浠ュ緱鍒?/p>
鐜板湪榪樻槸鍦∣penGL紼嬪簭涓潵媯(gè)鏌ヤ竴涓嬨傚湪OpenGL紼嬪簭涓坊鍔犱笅闈唬鐮佹:
鍦?strong>glGetFloatv(GL_PROJECTION_MATRIX,m)澶勮瀹氭柇鐐瑰氨鍙互鐪嬪埌鍥?0涓墍鏄劇ず鐨勪俊鎭?/pre>
鍥?3 瑙嗗彛鍙樻崲glViewport(width/2, 0, width/2, height/2) 璇ョ煩闃墊妸涓婁釜闃舵寰楀埌鐨勬瑙勫寲鍧愭爣鏄犲皠鍒扮獥鍙d笂錛屽茍涓斿皢姝h鍖栧潗鏍囦腑鐨勬繁搴﹀煎湪杞崲鍒?鍒?涔嬮棿銆傛墍浠ュ湪娣卞害緙撳啿涓渶澶у間負(fù)1錛屾渶灝忓間負(fù)0銆傝鍙e彉鎹㈢粨鏉?鍚庯紝OpenGL涓富瑕佺殑鍥懼艦綆$嚎闃舵灝辯畻瀹屾垚浜?jiǎn)锛屽悗闈鏄厜鏍呭寲绛壗{夋搷浣溿傚啀鏉ュ洖欏句竴涓嬪浘1錛岀幇鍦ㄧ浉淇″ぇ瀹跺榪欎釜娓叉煋綆$嚎鏈変簡(jiǎn)涓瀹氱殑璁よ瘑浜?jiǎn)锛屼篃鏄庣櫧浜?jiǎn)姣?涓涓樁孌靛搴旂殑鍙樻崲鐭╅樀浠ュ強(qiáng)濡備綍榪涜鍧愭爣涔嬮棿鐨勮漿鎹㈢殑銆?/p>
浠g爜涓嚱鏁拌繑鍥炵被鍨婫Vector鏄敤鎴峰畾涔夌殑鍚戦噺綾伙紝榪斿洖鐨勬槸榻愭鍧愭爣銆?/pre>
]]>