最近開始學習opengl 感覺頭都要炸了。 opengl的api 關於官方文件 的資料少之又少。經過了幾天的翻牆查閱各種國外個資料,感覺受益非淺。接下來,讓我來慢慢開始講一下最近自己所學的知識。首先建立乙個xcode專案。並且為專案匯入opengles.framework 系統庫,這樣做,我們就用用這個框架來進行繪三角型了。
接下來建立乙個hztriangularview。並把opengles.framework 中兩個重要的標頭檔案引入 該檔案中。這裡注意一下:為什麼用es2呢? 因為現在廣泛應用都是使用es2 的api了。es2 和 es1 api的改動很大。由於根據主流來學習。查閱資料時,資料基本都是es2 來完成繪畫的。
下面四個屬性是接下來需要使用到的,在這,我先把它寫出來。
#import
#import
#import
@inte***ce hztriangularview :
uiview
第一步:在這,有個很重要方法必須重點說明一下,必須實現這個方法。
//
所有的opengl
渲染都是在這個
caeagllayer
型別圖層進行渲染的。所以這乙個
必須設定。
否則執行不起來。
+(class)layerclass
第二步:
//
建立上下文。
- (void)initcontext
if (![
eaglcontext
setcurrentcontext
:_context
])}
第三步:
//
轉化圖層。
- (void)initlayer
第四步:
//
建立渲染緩衝區。並為其繫結
緩衝物件。
- (void)initrenderbuffer
第五步:
//
建立幀緩衝區,並為其繫結
緩衝物件。
- (void)initframebuffer
第六步:
//
渲染-(void)render
第七步:
-(
instancetype
)initwithframe:(
cgrect
)frame
return
self
;}
寫完上面的每乙個步驟後,乙個基本的渲染就可以成功顯示了,別忘了把在控制器中把hztriangularview建立出來然後新增起來噢,不然顯示不出效果的。
執行起來,顯示下面的顏色證明你已經成功渲染了乙個view,接下來我們就要開始製作三角型的渲染。
開始繪畫三角型時,先讓我們來了解一下。繪三角型 需要拿一下前提和準備。在這,我會稍微講解一下。兩個檔案,乙個叫頂點著色器,另乙個叫 片元著色器,為什麼這兩個著色器叫檔案呢。因為它跟我們現在xcode使用的檔案不同。字尾是可以任意命名的。
這兩個著色器檔案中。主要是儲存著 頂點 顏色 輸入 傳出 等等功能,下面**會一一跟大家介紹。
現在來分析 繪製三角型需要哪些準備:
1.0 三角型的座標。在二維中座標用(x,y)表示 而在三維中 用(x,y,z)
2.0 三角型的顏色。單一的顏色 還是 多種顏色的。
3.0 三角型的連線。三個點連線起來。
看到這裡。估計許多同學都會有種懵懵的狀態,沒關係 下面會慢慢講解。
在opengl中,最常使用的就是c語言的結構體。
//
這是乙個代表頂點的結構體
position:(x,y,z) color:(r,g,b,a)
typedef
structvertex;
//
這就是頂點結構體的3個
頂點和顏色。
const
vertex
vertices=,},
,},
,}
};
//
這就是三角型相連的三個點。
const
glubyte
indices = ;
現在 我們有了三角型 座標 顏色 相連點。那麼我們還需要 有上面說過的 兩種著色器。
triangular.glsl 這個檔案叫做頂點著色器,在該檔案寫入
OpenGL畫三角形
修改paintgl函式 void nehewidget paintgl 清楚螢幕和深度快取 glclear gl color buffer bit gl depth buffer bit 重置當前的模型觀察矩陣 glloadidentity gltranslatef 1.5,0.0,6.0 開始繪製...
OpenGL畫三角形
修改paintgl函式 void nehewidget paintgl 清楚螢幕和深度快取 glclear gl color buffer bit gl depth buffer bit 重置當前的模型觀察矩陣 glloadidentity gltranslatef 1.5,0.0,6.0 開始繪製...
css border 畫三角形
前幾日在瀏覽 中無意發覺了人家用css來畫三角形,我覺得很有趣但不太會所以就問了一下師姐,發覺自己很無知,呵呵,原來很多人都是用這種方法畫三角形的,為什麼的,原因如下 1 一張小三角形的可能有幾百位元組,不過幾百位元組可以寫多少行 呢?2 太多會導致網頁載入得會很慢 先看 吧 html css bo...