1.紋理坐標(biāo)、屏幕坐標(biāo)鳖孤;
1)http://blog.csdn.net/cbbbc/article/details/39738641
2)畫法有多種:紋理貼圖的另一個(gè)跑得起來的例子:講了很多的例子;
如何在OpenGL畫抡笼、如何用CoreGraphics畫苏揣、如何用
https://github.com/icetime17/DemoOpenGL.git
3)有幾種畫板?GLKView也是一種推姻!Framebuffer+layer是一種平匈!頂點(diǎn)方式一種!
2.新手入門概念:http://www.olinone.com/?p=308
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)藏古、
glViewport
glMatrixMode增炭、
glLoadIdentity、
glOrthof(0, 320, 0, 480, -1024, 1024);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity
glColor4f(r,g,b,alpha)[與L(Lr,Lg,Lb,x)互斥]
glVertexPointer(2/vertexBuffer中每2個(gè)一組為頂點(diǎn)/, GL_FLOAT, 0/stride/, vertexBuffer);
GLProgram *yuvConversionProgram:將YUV顏色空間轉(zhuǎn)換成RGB顏色空間的GLSL拧晕。
http://www.reibang.com/p/856f30c86d2f
6.也是一個(gè)超級(jí)簡單的例子:https://github.com/panghaijiao/HJGLKViewControllerDemo
0)我們要處理的坐標(biāo)的兩種類型:模型和世界隙姿。模型坐標(biāo)是指我們正在繪制的實(shí)際圖元,世界坐標(biāo)告訴OpenGL觀察者在哪里厂捞。
1)不同坐標(biāo)系下孟辑,平行四邊形的各個(gè)頂點(diǎn)坐標(biāo)怎么標(biāo)。
2)默認(rèn)是:【-1蔫敲,1】饲嗽。可以改成projection+glOrthof坐標(biāo)系:left奈嘿,right貌虾,bottom,top裙犹,znear尽狠,zfar。
3)頂點(diǎn)描述的順序應(yīng)該都是:left, top, right,bottom.畫序可以重新指定叶圃。
7.詳細(xì)講解各種基礎(chǔ)概念:http://blog.csdn.net/candycat1992/article/details/39676669
一定要看:
1).如何把頂點(diǎn)和它相關(guān)的信息袄膏,例如紋理坐標(biāo)、法線等掺冠,傳遞給GLSL呢沉馆?
頂點(diǎn)跟紋理合并成一個(gè)數(shù)組。
為了設(shè)置Uniform的值,我們可以調(diào)用glUniform*系列函數(shù)斥黑。而設(shè)置Attribute的值揖盘,我們需要在VBO中保存,并且和VAO一起發(fā)送給著色器锌奴,就像前一篇教程里的glVertexAttribPointer兽狭。加入你不想把值存在VBO里,你也可以使用glVertexAttrib*系列函數(shù)來設(shè)置Attribute值鹿蜀。
2).glUniform2f+ glUniform3vf:它不使用函數(shù)重載來解決不同類型的數(shù)據(jù)問題箕慧;
3).渲染的頂點(diǎn)可以定義索引,以后重復(fù)使用:索引列表茴恰;
4).紋理數(shù)據(jù)的維度大小一定要和上面的坐標(biāo)數(shù)組大小一致;合并后的頂點(diǎn)屬性列表:{5個(gè)數(shù)值颠焦、5個(gè)數(shù)值。琐簇。蒸健。}[前三個(gè)是頂點(diǎn)座享, 后兩個(gè)是紋理]
5)VBO和VAO如何創(chuàng)建婉商,關(guān)聯(lián)呢?
glGenBuffers+glBindBuffer+glBufferData(vertices):buffer是真正放頂點(diǎn)數(shù)據(jù)的地方渣叛。
glEnableVertexAttribArray+glVertexAttribPointer+glDrawArrays
glVertexAttribPointer使用來上傳頂點(diǎn)數(shù)據(jù)到顯卡的方法丈秩;
float position[9]={
-0.8f, -0.8f, 0.0f,
0.8f, -0.8f, 0.0f,
0.0f, 0.8f, 0.0f};
glVertexPointer(3, GL_FLOAT, 0,position);/*size:指定每個(gè)頂點(diǎn)對(duì)應(yīng)的坐標(biāo)個(gè)數(shù),可取2,3,4 */
[如果我們使用2d繪制,不加入深度(就是z),我們只要在這里寫2就可以了淳衙。]
6)vertex Array object和 vertext buffer object《這里的都是vertext相關(guān)的蘑秽,buffer不是framebuffer那個(gè)概念》
glBindBuffer(GL_ARRAY_BUFFER, buf1);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
這個(gè)過程就像一個(gè)中介人的作用,而中介人就是GL_ARRAY_BUFFER箫攀。我們可以這么想肠牲,glBindBuffer 設(shè)置了一個(gè)全局變量,然后glVertexAttribPointer讀取了這個(gè)全局變量并把它存儲(chǔ)在VAO中靴跛,這個(gè)全局變量就是GL_ARRAY_BUFFER缀雳。當(dāng)調(diào)用完glVertexAttribPointer后,頂點(diǎn)屬性已經(jīng)知道了數(shù)據(jù)來源就是buf1梢睛,它們之間就會(huì)直接聯(lián)系肥印,而不需要在通過GL_ARRAY_BUFFER。
8.高級(jí)概念:
1)關(guān)于framebuffer是renderbuffer的管理者的觀點(diǎn)總結(jié):http://blog.csdn.net/colorapp/article/details/36899341
2)
9.貼圖:
http://www.cocoachina.com/game/20150812/12970.html
http://www.cnblogs.com/bigly/p/5804541.html
1)可以用attribute給Shader傳值绝葡,Shader再傳給FragmentShader深碱,但Uniform可以直接給FragShader傳旨;
2)讓我看懂了glVertexAttribPointer如何從bufferData中獲取頂點(diǎn)藏畅、法線敷硅、顏色、紋理的值;注釋非常詳細(xì)竞膳。