版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-OpenGL ESOpenGL ES 02 繪制圖元 2 矩形-02嚴(yán)格意義上來(lái)說(shuō),矩形并不是OpenGL ES 的圖元。 但是,讓面對(duì)現(xiàn)實(shí),繪制這些矩形象繪制一個(gè)三角形一樣非常簡(jiǎn)單。在本中,把基本的三角形繪制代碼轉(zhuǎn)化為繪制矩形。再一次說(shuō)明,這些渲染是的,但是通過(guò)轉(zhuǎn)化(即移動(dòng)它們)來(lái)使它們快速移動(dòng)。當(dāng)然,一旦完成了矩形,試圖完成一個(gè)立方體,完成一個(gè)紋理的立方體。本的快速小結(jié)及其他用空白畫(huà)布的 XCode 工程來(lái)渲染了一個(gè)實(shí)心的白色的三角形。為了做到這點(diǎn),上 個(gè),你創(chuàng)建了一個(gè)頂點(diǎn)數(shù)組,告訴OpenGL 這些數(shù)據(jù)并且使用 glVertexPoer() 來(lái)格式化。為渲染這個(gè)頂點(diǎn)數(shù)組定義一個(gè)狀態(tài),并
2、且使用 glDrawArrays ()來(lái)渲染它。,要使用之前的代碼,用制作三角形的方法來(lái)制作一個(gè)矩形。要做到這點(diǎn),僅僅需要修改一對(duì)(組)代碼。第一點(diǎn)是顯然的,需要 4 點(diǎn)來(lái)組成矩形, 而不是原來(lái) 3 點(diǎn)的三角形。然后,要告訴OpenGL 用不一樣的 glDrawArrays().方法來(lái)繪制一個(gè)不同的物體。讓開(kāi)始吧。定義矩形的頂點(diǎn)打開(kāi)之前刪除它,中建立的XCode 工程,找到 drawView 函數(shù)。注釋掉triangleVerti在之后轉(zhuǎn)換的時(shí)候還需要用到,并且添加下列代碼:,但是不是constGLfloat squareVerti = -1.0, 1.0, -6.0,/ Bottom lef
3、t 1.0, 1.0, -6.0/ Top left-1.0, -1.0, -6.0,/ Bottom right1.0, -1.0, -6.0,/ Top right;這個(gè)定義了的矩形。注意,這個(gè)矩形的頂點(diǎn)也是逆時(shí)針的。然 后,到下面的繪制三角形的代碼處,將這些代碼都注釋掉,回復(fù)到開(kāi)始狀態(tài)。 所以注釋掉三個(gè)函數(shù)調(diào)用的glVertexArray( ) , glEnableCntS e ( ) ,和glDrawArrays ( ) ,并添加以下代碼:glVertexPoer(3, GL_FLOAT, 0, squareVerti glEnableCntSe(GL_VERTEX_ARRAY); g
4、lDrawArrays(GL_TRIANGLE_FAN, 0, 4););這三項(xiàng)職能相同,只是功能略有不同。glVertexPoer(3, GL_FLOAT, 0, squareVerti);這個(gè)唯一的變化就是告訴OpenGL 使用了不同的頂點(diǎn)設(shè)置方案,而不是現(xiàn)在的三角形。glEnableC ntS e()同樣是告訴 OpenGL 從頂點(diǎn)數(shù)組來(lái)繪制(而不是顏色數(shù)組或者其他的什么)glDrawArrays(GL_TRIANGLE_FAN, 0, 4);這里有些改變了。在上個(gè),使用GL_TRIANGLES 做用第一個(gè)參數(shù),并且使用 3 在第3 個(gè)參數(shù)里。第 2 個(gè)參數(shù)。之前是 0,這里也還是 0,
5、因?yàn)橹话司匦蔚捻旤c(diǎn)。第一個(gè)參數(shù)是繪圖模式,而且你現(xiàn)在看到兩種可能的OpenGL 繪圖方式。花時(shí)間來(lái)現(xiàn)在不同的繪圖模式。它們是:GL_PO GL_LINESSGL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_TRIANGLE_STRIP GL_TRIANGLE_FAN還沒(méi)有點(diǎn)或線(xiàn),所以我只介紹最后的三個(gè)。在我開(kāi)始之前,我要提醒你,頂點(diǎn)數(shù)組可能包含不止一個(gè)三角形,以您只看到一個(gè)物體頂點(diǎn)數(shù)組,你要知道,不僅限于這一點(diǎn)。GL_TRIANGLES - 這個(gè)參數(shù)意味著OpenGL 使用三個(gè)頂點(diǎn)來(lái)組成圖形。所以,在開(kāi)始的三個(gè)頂點(diǎn),將用頂點(diǎn) 1,頂點(diǎn) 2,頂點(diǎn) 3 來(lái)組
6、成一個(gè)三角形。完成后,在用下一組的三個(gè)頂點(diǎn)來(lái)組成三角形,直到數(shù)組結(jié)束。GL_TRIANGLE_STRIP - OpenGL 的使用將最開(kāi)始的兩個(gè)頂點(diǎn)出發(fā),然后遍歷每個(gè)頂點(diǎn),這些頂點(diǎn)將使用前 2 個(gè)頂點(diǎn)一起組成一個(gè)三角形。所以 squareVerti68將與 squareVerticies02和 squareVerticies35.生成一個(gè)三角形。 squareVerti911將與 squareVerti35 和squareVerti68生成三角形。也就是說(shuō),0,1,2 這三個(gè)點(diǎn)組成一個(gè)三角形,1,2,3 這三個(gè)點(diǎn)也組成一個(gè)三角形。注意的是, squareVerticies02表示的意思是: s
7、quareVerticies0 x 坐標(biāo)squareVerticies1 y 坐標(biāo)squareVerticies2 z 坐標(biāo)如果我沒(méi)有說(shuō)清楚的話(huà),我用下面的例子來(lái)說(shuō)明。GL_TRIANGLE_FAN - 在跳過(guò)開(kāi)始的 2 個(gè)頂點(diǎn),然后遍歷每個(gè)頂點(diǎn),讓OpenGL 將這些頂點(diǎn)于它們前一個(gè),以及數(shù)組的第一個(gè)頂點(diǎn)一起組成一個(gè)三角形。 squareVerti68將與squareVerticies35 (前一個(gè))和 squareVerticies02(第一個(gè)).生成一個(gè)三角形。也就是說(shuō),同樣是 0,1,2,3 這 4 個(gè)頂點(diǎn)。在STRIP 狀態(tài)下是,0,1,2;1,2,3 這 2 個(gè)三角形。在 FAN
8、狀態(tài)下是,2,1,0;3,2,0 這 2 個(gè)三角形。這次使用GL_TRIANGLE_FAN ,在顯示區(qū)域獲得一個(gè)矩形。點(diǎn)擊”Build & Go”,然后你將在屏幕上看到一個(gè)白色的矩形(平面)回頭看你的頂點(diǎn)數(shù)組。設(shè)法想像用三角形來(lái)繪制一個(gè)矩形。OpenGL 就是這樣做的。三角形點(diǎn) 1: squareVerticies02三角形點(diǎn) 2: squareVerticies35矩形的左上矩形的左下三角形點(diǎn) 3: squareVerticies68矩形的右下考慮到上述 3 點(diǎn),一個(gè)三角形的OpenGL 的繪制將彌補(bǔ)左下角的一半面積。試想矩形被對(duì)角線(xiàn)分割為左上角和右下角。如何通知這兩個(gè)三角形?OpenGL
9、剛才只繪制了矩形的左半邊。三角形點(diǎn) 1: squareVerticies911三角形點(diǎn) 2: squareVerticies68三角形點(diǎn) 3: squareVerticies02矩形的右上矩形的右下,上個(gè)點(diǎn)矩形的左上,第一點(diǎn)只使用了一個(gè)新的點(diǎn),OpenGL 可以渲染這個(gè)三角形來(lái)完成矩形。GL_TRIANGLE_STRIP返回代碼,改變glDrawArrays() 的第一個(gè)參數(shù)由 GL_TRIANGLE_FAN 為GL_TRIANGLE_STRIP:。點(diǎn)擊”Build & Go”然后你會(huì)獲得下面的。讓來(lái)看看,為什么只是單單修改了下繪制模式,卻沒(méi)有獲得一個(gè)矩形。OpenGL展示的頂點(diǎn)數(shù)組如下:三角
10、形點(diǎn) 1: squareVerticies02三角形點(diǎn) 2: squareVerticies35三角形點(diǎn) 3: squareVerticies68矩形的左上矩形的左下矩形的右下OpenGL 使用了前 3 個(gè)點(diǎn)來(lái)渲染一個(gè)三角形。這個(gè)左下的三角形和之前是相同的。三角形點(diǎn) 1: squareVerticies911三角形點(diǎn) 2: squareVerticies68三角形點(diǎn) 3: squareVerticies35矩形的右上矩形的右下,上個(gè)點(diǎn)矩形的左下,上 2 個(gè)點(diǎn)這個(gè)是現(xiàn)在渲染三角形的 3 個(gè)點(diǎn)。這個(gè)三角形和理想的三角形有 90 度的夾角。提供的頂點(diǎn)的數(shù)組不同,可以實(shí)現(xiàn)一個(gè)正確的 GL_TRIANG
11、LE_STRIP ,如果現(xiàn)在還是做的GL_TRIANGLE_FAN 。必須記住,你的繪制模式必須和你的頂點(diǎn)數(shù)組保持一致,否則,就會(huì)出現(xiàn)奇怪的效果,就象剛才修改的那樣。如果,你堅(jiān)持使用 GL_TRIANGLE_STRIP ,你只需要修改你的頂點(diǎn)數(shù)組,如下:const GLfloat stripSquare = -1.0, -1.0, -6.0,1.0, -1.0, -6.0,-1.0, 1.0, -6.0,1.0, 1.0, -6.0/ bottom left/ bottom right/ top left/ top right;因此,與上述情況,可以看到第一個(gè)三角形將形成頭三個(gè)頂點(diǎn),產(chǎn)生一個(gè)三角形如下:現(xiàn)在,通過(guò)指定點(diǎn)右上角頂點(diǎn)( P4) ,一個(gè)新的三角地帶將形成與左上角工作( P3 )和第二前頂點(diǎn)(P2)這是右下角。新的頂點(diǎn)顯示為橙色,綠色和紅色如下:結(jié)果是,那種方式都可以讓生成一個(gè)矩形。最終
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)中端酒店行業(yè)并購(gòu)重組擴(kuò)張戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)家庭服務(wù)機(jī)器人行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)虛擬養(yǎng)老院行業(yè)營(yíng)銷(xiāo)創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)新型健康服務(wù)行業(yè)營(yíng)銷(xiāo)創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025-2030年中國(guó)礦山開(kāi)發(fā)服務(wù)行業(yè)開(kāi)拓第二增長(zhǎng)曲線(xiàn)戰(zhàn)略制定與實(shí)施研究報(bào)告
- 建設(shè)社會(huì)主義文化強(qiáng)國(guó)論文
- 中國(guó)心理測(cè)試儀器行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 一年級(jí)數(shù)學(xué)計(jì)算題專(zhuān)項(xiàng)練習(xí)匯編
- 大客車(chē)常用知識(shí)培訓(xùn)課件
- 年產(chǎn)40000噸環(huán)保新能源材料生產(chǎn)線(xiàn)項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-拿地申報(bào)
- 圍手術(shù)期血糖的管理
- 2024年度醫(yī)療器械監(jiān)督管理?xiàng)l例培訓(xùn)課件
- 項(xiàng)目七電子商務(wù)消費(fèi)者權(quán)益保護(hù)的法律法規(guī)
- 100以?xún)?nèi)不進(jìn)位不退位加減法練習(xí)題
- 企業(yè)安全生產(chǎn)評(píng)估報(bào)告
- 水庫(kù)大壩深基坑開(kāi)挖專(zhuān)項(xiàng)方案樣本
- 經(jīng)橈動(dòng)脈腦血管造影術(shù)前術(shù)后護(hù)理
- 品質(zhì)經(jīng)理工作總結(jié)
- 運(yùn)行設(shè)備巡回檢查制度模版
- 肯德基經(jīng)營(yíng)策略分析報(bào)告總結(jié)
- 噴涂主管年后業(yè)務(wù)規(guī)劃暨工作計(jì)劃
評(píng)論
0/150
提交評(píng)論