走讀iphone游戲開發(fā)示例代碼-創(chuàng)新互聯(lián)

自定義ViewController中存在兩組方法,第一組為:

創(chuàng)新互聯(lián)建站公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站設(shè)計制作、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元莒縣做網(wǎng)站,已為上家服務(wù),為莒縣各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

viewDidLoad;

viewDidUnload;

didReceiveMemoryWarning

shouldAutorotateToInterfaceOrientation

這組方法為view的通用方法,方法的定義在UIViewController接口中。

第二組為:

update

drawInRect

setupGL

tearDownGL

loadShaders

compileShader

linkProgram

validateProgram

這組方法為利用opengl繪圖。其中update、drawInRect方法為系統(tǒng)回調(diào)方法,其余為opengl的基礎(chǔ)操作方法。如圖1所示,跟蹤程序發(fā)現(xiàn),整個架構(gòu)底層是一個timer,定時調(diào)用GLKViewController的 _updateAndDraw方法,而在_updateAndDraw方法中會依次調(diào)用到drawInRect和update方法。其中drawInRect方法的主要邏輯是繪圖,并返回一個 GLKView;update方法主要用于更新游戲信息;其中drawInRect方法也可以在自定義的view中實現(xiàn),這樣應(yīng)該至少可以方便地實現(xiàn)同一游戲邏輯下可以使用不同的渲染效果。

走讀iphone游戲開發(fā)示例代碼

圖1

第二組的其余方法揭示了opengl的基本使用方法:

1.EAGLContext 是包含opengl繪圖時所涉及到的狀態(tài)信息、命令、資源的上下文環(huán)境。從代碼中看,程序把生成的EAGLContext先后掛接到GLKView和opengl層,掛接的方法分別是

GLKView *view = (GLKView *)self.view;

view.context = self.context;

[EAGLContext setCurrentContext:self.context];

2.代碼中展示了兩種opengl渲染方式,一種是使用GLKit渲染,另一種是使用ES2。

使用GLKit渲染的核心想法是使用GLKBaseEffect簡化對opengl的調(diào)用,你可以通過GLKBaseEffect的若干屬性對渲染方式進行設(shè)定,并在使用opengl渲染之前調(diào)用如下方法

[self.effect prepareToDraw];

ES2方式是基于GLSL的,它可以動態(tài)加載、編譯、執(zhí)行GLSL編寫的渲染腳本,其大致的調(diào)用順序如下:

1)創(chuàng)建程序?qū)ο?/p>

通過glCreateProgram創(chuàng)建程序?qū)ο蟆?/p>

2)編譯shader

通過glCreateShader創(chuàng)建一個shader對象

讀取shaker腳本內(nèi)容,并通過glShaderSource把內(nèi)容與之前創(chuàng)建的shader對象關(guān)聯(lián)上,讀取文件內(nèi)容可以通過stringWithContentsOfFile方法實現(xiàn)。

通過glCompileShader方法編譯shader。

通過glGetShaderiv,傳入GL_COMPILE_STATUS參數(shù)可以查看編譯狀態(tài)。

3)鏈接shader

使用glLinkProgram方法可以鏈接shader程序。

在鏈接shander程序之前還必須做兩樣事情:一個是通過glAttachShader方法把程序?qū)ο笈c編譯好的shader對象做關(guān)聯(lián);另一個是通過glBindAttribLocation方法設(shè)置屬性位置,這個是方便系統(tǒng)在之后解析綁定數(shù)據(jù)的時候可以按照正確的約定讀取屬性信息。

通過glGetShaderiv,傳入GL_LINK_STATUS參數(shù)可以查看鏈接狀態(tài)。

4)運行shader

在繪制的邏輯中,使用glUseProgram方法可以把程序?qū)ο箨P(guān)聯(lián)到opengl繪圖上下文中

通過glUniformMatrix4fv可以傳遞參數(shù)到shader中,具體傳遞的是哪個參數(shù)由該方法的第一個參數(shù)決定,而第一個參數(shù)的具體值可以在鏈接shader之后調(diào)用glGetUniformLocation獲取。

做好了上述一切,在調(diào)用opengl的繪制方法時,底層會直接使用shader進行繪制。

ps:

1.opengl對外暴漏的是類c語言的接口方式,它按照下面的思維方式處理對象。

1)用戶可以通過系統(tǒng)函數(shù)創(chuàng)建一些對象,返回給用戶的只是對象的一個句柄,在opengl里用GLuint類型表示。

2)在調(diào)用對象相關(guān)方法時有兩種方案,一種是使用方法的參數(shù)(一般是第一個參數(shù))指定要操作哪個對象;另一種是通過一些bind方法,把對象綁定在系統(tǒng)底層的環(huán)境上下文中,此后所有的函數(shù)調(diào)用就都跟之前綁定的對象相關(guān)。

參考資料:

http://www.ityran.com/article-80-1.html

http://zh.wikipedia.org/wiki/GLSL

http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

文章標題:走讀iphone游戲開發(fā)示例代碼-創(chuàng)新互聯(lián)
本文URL:http://muchs.cn/article32/cdsipc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、服務(wù)器托管、營銷型網(wǎng)站建設(shè)標簽優(yōu)化、全網(wǎng)營銷推廣、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計