OpenGL ES之Swift使用GLSL语言渲染图片的显示
生活随笔
收集整理的這篇文章主要介紹了
OpenGL ES之Swift使用GLSL语言渲染图片的显示
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
整體思路
一、GLSL和iOS
- 本片主要使用編譯鏈接自定義的shader(頂點(diǎn)著色器/片元著色器)。用簡(jiǎn)單的GLSL語(yǔ)言來實(shí)現(xiàn)頂點(diǎn)、片元著色器,并對(duì)圖形進(jìn)行簡(jiǎn)單的變換。
- OpenGL ES只是用來做渲染的,所iOS要提供一個(gè)載體,就是CAEAGLLayer,創(chuàng)建的方法是,通過重寫UIView的類屬性(OC中是類方法)返回CAEAGLLayer.self。它是一個(gè)對(duì)core animation的封裝,它能滿足所有的OpenGLES的方法訪問。
- CAEAGLLayer:在制定該圖層關(guān)聯(lián)的視圖作為渲染器的目標(biāo)圖形上下文之前,可以使用drawableProperties屬性更改呈現(xiàn)屬性。此屬性允許您配置呈現(xiàn)表面的顏色格式以及表面是否保留其內(nèi)容。 因?yàn)镺penGL ES渲染的效果是要提交到用戶使用的核心動(dòng)畫上,所以使用在該layer上的任何效果和動(dòng)畫都會(huì)影響渲染的3D效果,為了時(shí)性能最佳你應(yīng)該做一下操作:設(shè)置圖層為不透明,設(shè)置圖層邊界以匹配顯示的尺寸,確保圖層沒有做變換。
- 盡量避免在CAEAGLLayer添加其layer。如果必須要添加其他非OpenGL內(nèi)容,那么如果將透明的2D內(nèi)容置于GL內(nèi)容之上,并確保OpenGL內(nèi)容是不透明的且沒有轉(zhuǎn)換過,那么性能還是可以接受的。當(dāng)在豎屏上繪制橫向內(nèi)容時(shí),應(yīng)該自己旋轉(zhuǎn)內(nèi)容,而不是使用CAEAGLLayer轉(zhuǎn)換來旋轉(zhuǎn)它。
二、GLSL實(shí)現(xiàn)圖片渲染的思路
- 創(chuàng)建圖層:重寫layerClass,將YDWView返回的圖層從CALayer替換成CAEAGLLayer,并設(shè)置描述屬性;
- 創(chuàng)建上下文?
總結(jié)
以上是生活随笔為你收集整理的OpenGL ES之Swift使用GLSL语言渲染图片的显示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL ES之GLSL渲染图片显示
- 下一篇: OpenGL ES之纹理翻转的解决策略