锘??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩一区二区久久久久久,成人午夜精品久久久久久久小说,2021少妇久久久久久久久久http://www.shnenglu.com/guojingjia2006/archive/2012/12/07/196089.html灝忔灉瀛?/dc:creator>灝忔灉瀛?/author>Fri, 07 Dec 2012 12:40:00 GMThttp://www.shnenglu.com/guojingjia2006/archive/2012/12/07/196089.htmlhttp://www.shnenglu.com/guojingjia2006/comments/196089.htmlhttp://www.shnenglu.com/guojingjia2006/archive/2012/12/07/196089.html#Feedback0http://www.shnenglu.com/guojingjia2006/comments/commentRss/196089.htmlhttp://www.shnenglu.com/guojingjia2006/services/trackbacks/196089.html

1. OpenGL 娓叉煋綆$嚎

OpenGL娓叉煋綆$嚎鍒嗕負(fù)涓ゅぇ閮ㄥ垎錛?strong>妯″瀷瑙傛祴鍙樻崲(ModelView Transformation)鍜?strong>鎶曞獎(jiǎng)鍙樻崲(Projection Transformation)銆傚仛涓瘮鍠伙紝璁$畻鏈哄浘褰㈠紑鍙戝氨鍍忔垜浠収鐩鎬竴鏍鳳紝鐩殑灝辨槸鎶婄湡瀹炵殑鍦烘櫙鍦ㄤ竴寮犵収鐩哥焊涓婅〃鐜板嚭鏉ャ傞偅涔?strong>瑙傛祴鍙樻崲鐨勮繃紼嬪氨鍍忔槸鎴戜滑鎽嗚鐩告満鐨勪綅緗紝閫夋嫨濂借鐓х殑鐗╀綋錛屾憜濂界墿浣撶殑閫犲瀷銆傝?strong>鎶曞獎(jiǎng)鍙樻崲灝卞儚鐩告満鎶婄湡瀹炵殑涓夌淮鍦烘櫙鏄劇ず鍦ㄧ浉綰?/strong>涓婁竴鏍楓備笅闈㈠氨鍒嗗埆璇︾粏鐨勮涓涓嬭繖涓や釜榪囩▼銆?/p>

1.1妯″瀷瑙傛祴鍙樻崲

璁╂垜浠厛鏉ュ紕娓呮OpenGL涓殑娓叉煋綆$嚎銆傜綰挎槸涓涓娊璞$殑姒傚康錛屼箣鎵浠ョО涔嬩負(fù)綆$嚎鏄洜涓烘樉鍗″湪澶勭悊鏁版嵁鐨勬椂鍊欐槸鎸夌収涓涓浐瀹氱殑欏哄簭鏉ョ殑錛岃屼笖涓ユ牸鎸夌収榪欎釜欏哄簭銆傚氨鍍忔按浠庝竴鏍圭瀛愮殑涓绔祦鍒板彟涓绔紝榪欎釜欏哄簭鏄笉鑳芥墦鐮寸殑銆傚厛鏉ョ湅鐪嬩笅闈㈢殑鍥?錛?/p>

1                     鍥? OPENGL娓叉煋綆$嚎                                 

鍥句腑鏄劇ず浜?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>

2鍥? 涓栫晫鍧愭爣緋誨拰妯″瀷鍧愭爣緋?/strong>

鍙樻崲鍒頒笘鐣屽潗鏍嘩C(World Coordinate)璇寸畝鍗曠偣灝辨槸濡備綍鐢ㄤ笘鐣屽潗鏍囩郴鏉ヨ〃紺烘湰鍦板潗鏍囩郴涓殑鍧愭爣銆備負(fù)浜?jiǎn)璁插緱鏇存竻妤氫竴浜涳紝榪欓噷涓句釜2D鐨勪緥瀛愩傚鍥?錛?/p>

3 鍥? 涓栫晫鍧愭爣緋誨拰妯″瀷鍧愭爣緋葷殑璁$畻

鍥句腑綰㈣壊鍧愭爣緋繪槸涓栫晫鍧愭爣緋籛C錛岀豢鑹茬殑鏄?strong>妯″瀷鍧愭爣緋籑C銆傜幇鍦ㄦ湁涓涓《鐐癸紝鍦ㄦā鍨嬪潗鏍囩郴涓殑鍧愭爣涓?1,1)錛岀幇鍦ㄨ鎶婅繖涓ā鍨嬪潗鏍囪漿鎹㈠埌涓栫晫鍧愭爣涓潵琛ㄧず銆備粠鍥句腑鍙互鐪嬪嚭錛岀偣(1,1)鍦ㄤ笘鐣屽潗鏍囩郴涓殑鍧愭爣涓?3,4)錛岀幇鍦ㄦ垜浠潵閫氳繃璁$畻寰楀埌鎴戜滑甯屾湜鐨勭粨鏋溿傞鍏堟垜浠鎶婃ā鍨嬪潗鏍囩郴MC鍦ㄤ笘鐣屽潗鏍囩郴涓〃紺哄嚭鏉ワ紝浣跨敤榻愭鍧愭爣(Homogeneous Coordinate )鍙互琛ㄧず涓虹煩闃?娉ㄦ剰錛屾湰鏁欑▼涓嬌鐢ㄧ殑鐭╅樀閮芥槸浠ュ垪鍚戦噺緇勬垚)錛?a >gif.latex 鍏朵腑錛岀煩闃電殑絎竴鍒椾負(fù)MC涓瓁杞村湪WC涓殑鍚戦噺琛ㄧず錛?strong>絎簩鍒椾負(fù)MC涓瓂杞碬C涓殑鍚戦噺琛ㄧず錛?strong>絎笁鍒椾負(fù)MC涓殑鍘熺偣鍦╓C涓殑鍧愭爣銆傚榻愭鍧愭爣緋諱笉浜?jiǎn)瑙g殑鍚屽锛岃鍏堝涔?fàn)娓告垙鏁板鏂歸潰鐨勭煡璇嗐傛湁浜?jiǎn)杩欎釜妯″瀷鍙樻崲鐭╅樀鍚庡Q岀敤榪欎釜鐭╅樀涔樹互鍦∕C涓〃紺虹殑鍧愭爣灝卞彲浠ュ緱鍒拌鍧愭爣鍦ㄤ笘鐣屽潗鏍囩郴涓殑鍧愭爣銆傛墍浠ヨ鐭╅樀鍜孧C涓殑鍧愭爣(1,1)鐩鎬箻鏈?

gif.latex2 榪欎篃姝f槸鎴戜滑闇瑕佺殑緇撴灉銆傜幇鍦ㄨ鎴戜滑鎶婄浉鏈哄潗鏍囦篃鍔犺繘鍘伙紝鐩告満鍧愭爣涔熺О涓鴻嫻嬪潗鏍?View Coordinate)錛屽鍥?鍜屽浘5銆?/p>

4 鍥? ModelView鍙樻崲鐨勪笁涓潗鏍囩郴

5 鍥? ModelView鍙樻崲璁$畻

鏉ョ湅鐪婱C鍧愭爣涓殑鐐?1,1)濡備綍鍦ㄧ浉鏈哄潗鏍囦腑琛ㄧず銆備粠鍥?涓彲浠ョ洿鎺ョ湅鍑篗C涓殑鐐?1,1)鍦ㄧ浉鏈哄潗鏍囩郴VC涓負(fù)(-2,-2)銆傚拰涓婇潰鍚屾牱鐨勯亾鐞嗭紝鎴戜滑鍙互鍐欏嚭鐩告満鍧愭爣緋籚C鍦ㄤ笘鐣屾爣緋籛C涓彲浠ヨ〃紺轟負(fù)錛?/p>

gif.latex3 閭d箞涓栫晫鍧愭爣緋諱腑鐨勭偣杞崲涓虹浉鏈哄潗鏍囩郴涓殑鐐規(guī)垜浠氨闇姹俈C鐨勯嗙煩闃碉細(xì)

gif.latex4閭d箞涓栫晫鍧愭爣緋籛C涓殑鐐?3,4)鍦ㄧ浉鏈哄潗鏍囩郴VC涓潗鏍囦負(fù)錛?

gif.latex5 涓婇潰鐨勫彉鎹㈣繃紼嬶紝灝辨槸鍙互鎶?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ì)

gif.latex6 鐜板湪鍙鐢ㄤ笂闈㈢殑妯″瀷瑙傛祴鐭╅樀M涔樹互妯″瀷鍧愭爣緋籑C涓殑鍧愭爣灝卞彲浠ュ緱鍒扮浉鏈哄潗鏍囩郴涓殑鍧愭爣浜?jiǎn)銆傛ā鍨嬭嫻嬪彉鎹㈢殑鍏抽敭灝辨槸瑕佸緱鍒扮浉鏈哄潗鏍囩郴涓殑鍧愭爣錛屽洜涓哄厜鐓х瓑璁$畻閮芥槸鍦ㄨ繖涓繖涓潗鏍囩郴涓畬鎴愮殑銆備笅闈㈡垜浠疄闄匫penGL紼嬪簭涓鏌ヤ竴涓嬨傚湪紼嬪簭涓紝涓轟簡(jiǎn)璁$畻鏂逛究錛屾垜浠嬌鐢ㄥ浘6涓殑妯″瀷銆?/p>

6 鍥? ModelView鍙樻崲璁$畻妯″瀷

鏍規(guī)嵁鍥句腑鐨勬暟鎹紝鎴戜滑鍒嗗埆鍙互鍐欏嚭瀵瑰簲MC鍜孷C-1錛屼粠鑰屾眰寰?strong>瑙傛祴鍙樻崲鐭╅樀M銆?/p>

gif.latex7 鐜板湪紼嬪簭涓敤glGetFloatv()榪欎釜鍑芥暟鏉ヨ幏寰楀綋鍓嶇煩闃墊暟鎹潵媯(gè)鏌ヤ竴涓嬨?/p>

  1. float m[16] = {0}; //鐢ㄦ潵淇濆瓨褰撳墠鐭╅樀鏁版嵁  
  2. glMatrixMode(GL_MODELVIEW);  
  3. glLoadIdentity();  
  4. glGetFloatv(GL_MODELVIEW_MATRIX, m);   
  5. //鐩告満璁劇疆錛孷iew 鍙樻崲  
  6. gluLookAt(0.0, 0.0, 5.0,  
  7. 0.0, 0.0, 0.0,  
  8. 0.0, 1.0, 0.0);  
  9. glGetFloatv(GL_MODELVIEW_MATRIX, m);   
  10. //鎶曞獎(jiǎng)璁劇疆  
  11. glMatrixMode(GL_PROJECTION);  
  12. glLoadIdentity();  
  13. glOrtho(-10,10,-10,10,-10,10);  
  14. glMatrixMode(GL_MODELVIEW);   
  15. //Modeling鍙樻崲  
  16. glTranslatef(0, 0, -3);  
  17. glGetFloatv(GL_MODELVIEW_MATRIX, m);  
  18. glBegin(GL_POINTS);  
  19. glVertex3f(1,1,0);  
  20. glEnd();  

濡傛灉鍦ㄤ笂闈㈢▼搴忔涓渶鍚庝竴涓?strong>glGetFloatv(GL_MODELVIEW_MATRIX, m)澶勮瀹氭柇鐐圭殑璇濓紝灝卞彲浠ョ湅鍒板浘7鎵鏄劇ず鐨勬暟鎹?/p>

7 鍥? ModelView鍙樻崲鐭╅樀鏁版嵁

鍒拌繖閲岋紝鏁翠釜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>

8 鍥? 姝d氦鎶曞獎(jiǎng)

姣斿灝嗙偣(1,1,5)姝d氦鎶曞獎(jiǎng)鍒皕=0鐨勫鉤闈笂錛岄偅涔堟姇褰卞悗鐨勫潗鏍囦負(fù)(1,1,0)銆傚湪openGL涓紝璁劇疆姝d氦鎶曞獎(jiǎng)鍙互浣跨敤鍑芥暟:

  1. glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)  

璇ュ嚱鏁板彲浠ヨ緗浜ゆ姇褰辯殑鎶曞獎(jiǎng)絀洪棿錛屽湪璇ョ┖闂翠互澶栫殑鍧愭爣鐐瑰氨涓嶄細(xì)琚姇褰卞埌鎶曞獎(jiǎng)騫抽潰涓娿傚嚱鏁頒腑鐨勫叚涓弬鏁板垎鏄姇褰辯┖闂村叚涓鉤闈紝濡傚浘9:

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>

15 榪欎釜鐭╅樀鐪嬫潵寰堝鏉傦紝鍏跺疄璁$畻寰堢畝鍗曘備婦涓緥瀛愶紝鐜板湪璁劇疆浜?jiǎn)杩欐狅L(fēng)殑姝d氦鎶曞獎(jiǎng)絀洪棿glOrtho(-10,10,-10,10,-10,10)錛岃繖鏄釜姝e叚闈綋絀洪棿錛屽彉闀夸負(fù)10銆傛妸榪欎簺鍙傛暟甯﹀叆涓婇潰鐨勭煩闃靛彲浠ュ緱鍒?/p>

gif.latex8 鐜板湪榪樻槸鍦∣penGL紼嬪簭涓潵媯(gè)鏌ヤ竴涓嬨傚湪OpenGL紼嬪簭涓坊鍔犱笅闈唬鐮佹:

  1. //鎶曞獎(jiǎng)璁劇疆  
  2. glMatrixMode(GL_PROJECTION);  
  3. glLoadIdentity();  
  4. glOrtho(-10,10,-10,10,-10,10);  
  5. glMatrixMode(GL_MODELVIEW);  
  6. glGetFloatv(GL_PROJECTION_MATRIX,m)  
鍦?strong>glGetFloatv(GL_PROJECTION_MATRIX,m)澶勮瀹氭柇鐐瑰氨鍙互鐪嬪埌鍥?0涓墍鏄劇ず鐨勪俊鎭?/pre> 

10 鍥?0 姝d氦鍙樻崲鐭╅樀鏁版嵁

1.2.2閫忚鎶曞獎(jiǎng)

閫忚鎶曞獎(jiǎng)鍜屾浜ゆ姇褰辨渶澶х殑鍖哄埆灝辨槸閫忚鎶曞獎(jiǎng)鍏鋒湁榪滆繎鎰熴?/p>

11

鍥?1 閫忚鎶曞獎(jiǎng)

閫忚鎶曞獎(jiǎng)閲囩敤浜?jiǎn)鍥?1涓殑妯″瀷錛岃繖鏍風(fēng)殑妯″瀷灝辨槸淇濊瘉榪滅殑鐗╀綋鐪嬭搗鏉ュ皬錛岃繎鐨勭墿浣撶湅璧鋒潵澶с?鍦∣penGL涓緗忚鎶曞獎(jiǎng)鍙互浣跨敤鍑芥暟:

  1. void APIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);  

璇ュ嚱鏁頒篃浼?xì)鏍规嵁缁欏畾鐨勫弬鏁扮敓鎴愪竴涓姇褰辯┖闂淬傚鍥?1涓紝璇ユ姇褰辯┖闂存槸涓涓埅澶翠綋銆傚悓鏍峰湴錛孫penGL浼?xì)鑷姩鐢熸垚閫忚鎶曞獎(jiǎng)鐭╅樀錛岃鐭╅樀涔熶細(xì)璁?D鍧愭爣鎶曞獎(jiǎng)鍦ㄦ姇褰卞鉤闈笂錛屽茍涓斿皢鎶曞獎(jiǎng)鍚庣殑鍧愭爣涔熻繘琛屾瑙勫寲銆備笅闈篃鐩存帴緇欏嚭OpenGL涓嬌鐢ㄧ殑閫忚鎶曞獎(jiǎng)鐭╅樀銆?/p>

16 涓嬮潰鍦∣penGL涓坊鍔犱笅闈唬鐮佹:

  1. //鎶曞獎(jiǎng)璁劇疆  
  2. glMatrixMode(GL_PROJECTION);  
  3. glLoadIdentity();  
  4. gluPerspective(45, 1.0, 1.0, 100);  
  5. glMatrixMode(GL_MODELVIEW);  
  6. glGetFloatv(GL_PROJECTION_MATRIX,m)  

璁劇疆鏂偣鍚庯紝鎴戜滑鍙互鐪嬪埌鍥?2涓樉紺虹殑鏁版嵁銆?/p>

12鍥?2 閫忚鍙樻崲鐭╅樀鏁版嵁

鍒版涓烘錛屾暣涓姇褰卞彉鎹㈠氨瀹屾垚浜?jiǎn)銆傞忚繃鎶曞獎(jiǎng)鍙樻崲鍚庡緱鍒扮殑鏄瑙勫寲鐨勬姇褰卞鉤闈㈠潗鏍囥傝繖涓轟笅涓涓樁孌電殑瑙嗗彛鍙樻崲(View port Transformation)鍋氬ソ浜?jiǎn)鍑嗗銆?

1.3瑙嗗彛鍙樻崲

鐜板湪鍒頒簡(jiǎn)鏈鍚庝竴涓樁孌典簡(jiǎn)銆傝繖涓樁孌靛彨鍋氳鍙e彉鎹紝瀹冩妸涓婁釜闃舵寰楀埌鐨勬瑙勫寲鐨勬姇褰卞潗鏍囪漿鍖栦負(fù)windows 紿楀彛鍧愭爣銆傝鍙e彉鎹細(xì)灝嗘姇褰卞鉤闈笂鐨勭敾闈㈡槧灝勫埌紿楀彛涓娿傚湪OpenGL涓彲浠ヤ嬌鐢ㄥ嚱鏁?/p>

  1. GLAPI void GLAPIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);  

鏉ヨ繘琛屽紿楀彛鐨勬槧灝勶紝濡傚浘13銆?/p>

13
鍥?3 瑙嗗彛鍙樻崲glViewport(width/2, 0, width/2, height/2)

涓句釜渚嬪瓙璇存槑錛屾瘮濡備笂涓樁孌典腑寰楀埌浜?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>

17 璇ョ煩闃墊妸涓婁釜闃舵寰楀埌鐨勬瑙勫寲鍧愭爣鏄犲皠鍒扮獥鍙d笂錛屽茍涓斿皢姝h鍖栧潗鏍囦腑鐨勬繁搴﹀煎湪杞崲鍒?鍒?涔嬮棿銆傛墍浠ュ湪娣卞害緙撳啿涓渶澶у間負(fù)1錛屾渶灝忓間負(fù)0銆傝鍙e彉鎹㈢粨鏉?鍚庯紝OpenGL涓富瑕佺殑鍥懼艦綆$嚎闃舵灝辯畻瀹屾垚浜?jiǎn)锛屽悗闈鏄厜鏍呭寲绛壗{夋搷浣溿傚啀鏉ュ洖欏句竴涓嬪浘1錛岀幇鍦ㄧ浉淇″ぇ瀹跺榪欎釜娓叉煋綆$嚎鏈変簡(jiǎn)涓瀹氱殑璁よ瘑浜?jiǎn)锛屼篃鏄庣櫧浜?jiǎn)姣?涓涓樁孌靛搴旂殑鍙樻崲鐭╅樀浠ュ強(qiáng)濡備綍榪涜鍧愭爣涔嬮棿鐨勮漿鎹㈢殑銆?/p>

2. 灞忓箷鍧愭爣杞崲涓轟笘鐣屽潗鏍?/strong>

閫氳繃鍓嶉潰鐨勬暀紼嬶紝浠ュ強(qiáng)鐜板湪澶у瀵筄penGL鏁翠釜娓叉煋綆$嚎鐞嗚В鍚庯紝鐜板湪瑕佸皢灞忓箷涓婁竴鐐瑰潗鏍囪漿鎹負(fù)涓栫晫鍧愭爣灝辨瘮杈冨鏄撲簡(jiǎn)銆備粠鍥懼艦綆$嚎鐨勫紑濮嬪埌緇撴潫錛屼竴 涓ā鍨嬪潗鏍囩郴涓殑鍧愭爣琚漿鍖栦負(fù)浜?jiǎn)灞忩q曞潗鏍囷紝閭d箞鐜板湪鎶婃暣涓繃紼嬪掕繃鏉ョ殑璇濓紝灞忓箷涓婁竴鐐瑰潗鏍囦篃鍙互杞負(fù)涓轟笘鐣屽潗鏍囥傚彧瑕佸湪瀵瑰簲鐨勯樁孌墊眰寰楀搴斿彉鎹㈢煩闃電殑閫嗙煩 闃碉紝灝卞彲浠ュ緱鍒板墠涓涓樁孌電殑鍧愭爣銆傝繖鏁翠釜榪囩▼鍙互鐢ㄥ浘14琛ㄧず銆?/p>

14 鍥?4灞忓箷鍧愭爣杞崲涓轟笘鐣屽潗鏍?/strong>

鍥句腑鏄劇ず鐨勮繃紼嬪畬鍏ㄥ氨鏄疧penGL娓叉煋綆$嚎鐨勯嗚繃紼嬶紝閫氳繃榪欎釜榪囩▼錛屽睆騫曚笂鐨勭偣灝卞彲浠ヨ漿鍖栦負(fù)涓栫晫鍧愭爣緋諱腑鐨勭偣浜?jiǎn)銆傚彲鑳藉張鏈夌殑鍚屽瑕侀棶錛屽綋榧犳爣鐐瑰嚮灞忓箷涓婁竴鐐圭殑鏃跺欏茍娌℃湁娣卞害淇℃伅錛岃漿鎹㈢殑鏃跺欒鎬庝箞鍔炲憿錛熻繖涓椂鍊欏彲浠ヤ嬌鐢∣penGL鍑芥暟

  1. void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);  

璇ュ嚱鏁拌兘澶熻幏寰楀睆騫曚笂涓鐐瑰搴斿儚绱犵殑娣卞害淇℃伅銆傛湁浜?jiǎn)杩欎釜娣卞害淇℃伅锛尀鍙互鍒╃敤涓婇潰杩嚱E嬫妸灞忓箷涓婁竴鐐硅漿鎹負(fù)涓栫晫鍧愭爣浜?jiǎn)銆傚湪OpenGL涓紝涓婇潰鐨勮繃紼嬪叾瀹炲凡緇忔湁鐜版垚鐨勫嚱鏁板彲浠ヤ嬌鐢紝閭e氨鏄?/p>

  1. int APIENTRY gluUnProject (  
  2.     GLdouble  winx, GLdouble  winy,  
  3.     GLdouble  winz,  
  4.     const GLdouble modelMatrix[16],  
  5.     const GLdouble projMatrix[16],  
  6.     const GLint    viewport[4],  
  7.     GLdouble  *objx,  GLdouble  *objy,  
  8.     GLdouble       *objz);  

璇ュ嚱鏁扮洿鎺ュ皢灞忓箷涓婁竴鐐硅漿鎹㈠搴旂殑涓栫晫鍧愭爣錛岃鍑芥暟鐨勫唴閮ㄥ疄鐜板叾瀹炶繕鏄笂闈㈢殑閭d箞閫嗚繃紼嬨備笅闈㈢粰鍑哄埄鐢ㄨ鍑芥暟鑾峰彇涓栫晫鍧愭爣鐨勪唬鐮佹銆?/p>

  1. GVector screen2world(int x, int y)  
  2. {  
  3.        GLint viewport[4];  
  4.        GLdouble modelview[16];  
  5.        GLdouble projection[16];  
  6.        GLfloat winX, winY, winZ;  
  7.        GLdouble posX, posY, posZ;  
  8.        glGetDoublev(GL_MODELVIEW_MATRIX, modelview);  
  9.        glGetDoublev(GL_PROJECTION_MATRIX, projection);  
  10.        glGetIntegerv(GL_VIEWPORT, viewport);  
  11.        winX = (float)x;  
  12.        winY = (float)viewport[3] - (float)y;  
  13.        glReadPixels(x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);  
  14.        gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);  
  15.        GVector v(4, posX, posY, posZ, 1.0);  
  16.        return v;  
  17. }  
浠g爜涓嚱鏁拌繑鍥炵被鍨婫Vector鏄敤鎴峰畾涔夌殑鍚戦噺綾伙紝榪斿洖鐨勬槸榻愭鍧愭爣銆?/pre> 


]]>
姝︽灄鑻遍泟緗戦〉鐗堣緟鍔╁皬紼嬪簭http://www.shnenglu.com/guojingjia2006/archive/2009/09/02/95091.html灝忔灉瀛?/dc:creator>灝忔灉瀛?/author>Wed, 02 Sep 2009 05:40:00 GMThttp://www.shnenglu.com/guojingjia2006/archive/2009/09/02/95091.htmlhttp://www.shnenglu.com/guojingjia2006/comments/95091.htmlhttp://www.shnenglu.com/guojingjia2006/archive/2009/09/02/95091.html#Feedback2http://www.shnenglu.com/guojingjia2006/comments/commentRss/95091.htmlhttp://www.shnenglu.com/guojingjia2006/services/trackbacks/95091.html浠ュ墠鑷繁鐜╂父鎴忔椂鍐欑殑涓涓綉欏墊父鎴忓皬杈呭姪錛屾湁鍏磋叮鐨別mail



]]>
win32鍙屾墸娓告垙http://www.shnenglu.com/guojingjia2006/archive/2008/11/12/66750.html灝忔灉瀛?/dc:creator>灝忔灉瀛?/author>Wed, 12 Nov 2008 12:33:00 GMThttp://www.shnenglu.com/guojingjia2006/archive/2008/11/12/66750.htmlhttp://www.shnenglu.com/guojingjia2006/comments/66750.htmlhttp://www.shnenglu.com/guojingjia2006/archive/2008/11/12/66750.html#Feedback0http://www.shnenglu.com/guojingjia2006/comments/commentRss/66750.htmlhttp://www.shnenglu.com/guojingjia2006/services/trackbacks/66750.html嫻嬭瘯鐗堝鏍″唴緗戝弻鎵o紝鍙槸瀹屾垚鏈鍩烘湰鐨勪竴浜涗笢瑗匡紝涓嶈繃鍙互鐜╃殑璧鋒潵浜?jiǎn)锛屼笉杩囧鎴风浠g爜鍐欑殑姣旇緝鍨冨溇锛寴q濆弽浜?jiǎn)璁稿c++涓嶈鐘殑涓滆タ錛屼笉榪囨病鍔炴硶錛屾垜璧峰厛鍐欑殑鏃跺欐棤娉曚及璁″啓榪欑殑澶嶆潅搴︼紝闅忕潃鏃墮棿鐨勬帹縐伙紝鎵嶆參鎱㈣寰楄秺鏉ラ毦浠ョ鐞嗗拰鎵╁睍銆備笉榪囪繕鏄簲鐫澶寸毊榪樻槸鍐欏畬浜?jiǎn)鏁翠釜妯″?涓嶈繃榪樻湁寰堝涓滆タ寰呮敼姝o紝濡傛椂闂寸殑鏄劇ず錛屼竴澶у爢錛岃繕鏈夊緢澶氬姛鑳芥ā鍧楁病鎵╁睍錛屽鑱婂ぉ鐨勫姛鑳藉拰璁板垎鐗岋紝榪樻湁瀹夊叏闂涓涓病鍐欍傘傚氨鏄湇鍔″櫒榪欑楠岃瘉娌″啓錛屼及璁¤偗瀹氫細(xì)琛ヤ笂錛屼笉鐒朵笉瀹夊叏鐨勶紝涓嶈繃鐜板湪鐨勯瑕佺殑鏄皢鎴戣嚜宸卞啓鐨勯噸鏂版暣鐞嗕笅錛屼笉鐒剁湡鐨勯毦浠ョ淮鎶わ紝鍛靛懙錛岀幇鍦ㄤ綋浼?xì)鍒颁簡(jiǎn)枋Y浠跺伐紼嬭佸笀璇寸殑涓鍙ヤ簡(jiǎn)"鍐欑▼搴忓鏋滄槸鍫嗙Н璧鋒潵鐨勶紝灝卞儚縐湪涓鏍鳳紝涓嶇ǔ錛岃秺寰涓婏紝鍧嶅鐨勫嚑鐜囦篃瓚婇珮錛屼笉鍙兘鍦ㄥ線涓婁簡(jiǎn).",鐜板湪鐘跺喌灝辮繖鏍鳳紝瑕佸ソ濂芥暣鐞嗕笅浠g爜錛岃繖鏍峰線鍚庡啓鎵嶅鏄撶淮鎶ゅ拰鎵╁睍錛屼富瑕佸紑濮嬪啓鐨勬椂鍊欐病浼拌鍒板啓榪欑殑澶嶆潅鎬с傘備互鍚庢槸涓鎴掍簡(jiǎn)..
濡傛灉鏈夋椂闂寸殑璇濓細(xì)閲嶆柊緇勭粐浠g爜錛屾墿灞曡亰澶╁姛鑳斤紝瀹夊叏鎬у姞寮猴紝鐣岄潰鍐欑殑婕備寒鐐廣傜洰鏍囧氨鏄笇鏈涙瘮qq閭e弻鎵e啓鐨勬洿濂?
^_^..
宸插畬鎴愰噸鏋?..鎵╁睍涔熸瘮浠ュ墠寮?..宸茬粡緇忚繃嫻嬭瘯錛屽嚭鐗岄昏緫鍜辨湭鍙戠幇bug.
鏈夊叴瓚ewin32娓告垙緙栫▼錛屽洜涓烘暣涓」鐩帇緙╀笂浼犻噺瓚呴檺鍒朵簡(jiǎn)錛屾墍浠ヤ笉鑳戒笂浼狅紝瀵逛唬鐮佸鏋滄劅鍏磋叮鐨勮瘽錛屽彂閭歡guojingjia@stu.hdu.edu.cn緇欐垜錛岃繖涔熸槸鎴戝垰瀛in32鐨勬椂鍊欑紪鐨勪竴涓父鎴忥紝涔熸槸浠g爜閲忔渶澶氱殑浜?..2500-3000..鎴戜篃鏄彍楦?..澶у涓璧峰涔?..


]]>
996久久国产精品线观看| 久久精品国产亚洲AV影院| 久久综合综合久久97色| 久久97精品久久久久久久不卡| 亚洲欧美精品伊人久久| 久久国产精品一区| 人妻精品久久久久中文字幕69| 热久久国产精品| 伊人久久大香线蕉综合5g | 久久99精品国产麻豆不卡| 欧洲国产伦久久久久久久| 久久婷婷五月综合国产尤物app| 久久香综合精品久久伊人| 日韩久久久久中文字幕人妻| 午夜人妻久久久久久久久| 国产精品免费久久久久电影网| 无码国内精品久久人妻| 久久久久国产一级毛片高清板| 亚洲精品乱码久久久久久按摩 | 久久综合五月丁香久久激情| 久久精品国产亚洲AV久| 久久99精品久久久久久9蜜桃 | 久久国产精品免费一区| 久久久亚洲欧洲日产国码二区| 伊人久久大香线蕉成人| 久久国产精品偷99| 青青青伊人色综合久久| 国产精品久久久久久吹潮| 久久久无码精品亚洲日韩蜜臀浪潮 | 久久99久久成人免费播放| 激情伊人五月天久久综合| 午夜不卡久久精品无码免费| 亚洲精品无码久久久| 久久无码精品一区二区三区| 99久久国产主播综合精品| 久久99久久99精品免视看动漫| 亚洲国产精品一区二区久久hs| 国产精品久久久久久久久久影院| 久久五月精品中文字幕| 久久精品无码一区二区三区日韩 | 精品久久人人爽天天玩人人妻|