1.纹理坐标、屏幕坐标;
1)http://blog.csdn.net/cbbbc/article/details/39738641
2)画法有多种:纹理贴图的另一个跑得起来的例子:讲了很多的例子;
如何在OpenGL画、如何用CoreGraphics画、如何用
https://github.com/icetime17/DemoOpenGL.git
3)有几种画板?GLKView也是一种!Framebuffer+layer是一种!顶点方式一种!
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个一组为顶点/, GL_FLOAT, 0/stride/, vertexBuffer);
GLProgram *yuvConversionProgram:将YUV颜色空间转换成RGB颜色空间的GLSL。
http://www.jianshu.com/p/856f30c86d2f
6.也是一个超级简单的例子:https://github.com/panghaijiao/HJGLKViewControllerDemo
0)我们要处理的坐标的两种类型:模型和世界。模型坐标是指我们正在绘制的实际图元,世界坐标告诉OpenGL观察者在哪里。
1)不同坐标系下,平行四边形的各个顶点坐标怎么标。
2)默认是:【-1,1】。可以改成projection+glOrthof坐标系:left,right,bottom,top,znear,zfar。
3)顶点描述的顺序应该都是:left, top, right,bottom.画序可以重新指定。
7.详细讲解各种基础概念:http://blog.csdn.net/candycat1992/article/details/39676669
一定要看:
1).如何把顶点和它相关的信息,例如纹理坐标、法线等,传递给GLSL呢?
顶点跟纹理合并成一个数组。
为了设置Uniform的值,我们可以调用glUniform*系列函数。而设置Attribute的值,我们需要在VBO中保存,并且和VAO一起发送给着色器,就像前一篇教程里的glVertexAttribPointer。加入你不想把值存在VBO里,你也可以使用glVertexAttrib*系列函数来设置Attribute值。
2).glUniform2f+ glUniform3vf:它不使用函数重载来解决不同类型的数据问题;
3).渲染的顶点可以定义索引,以后重复使用:索引列表;
4).纹理数据的维度大小一定要和上面的坐标数组大小一致;合并后的顶点属性列表:{5个数值、5个数值。。。}[前三个是顶点, 后两个是纹理]
5)VBO和VAO如何创建,关联呢?
glGenBuffers+glBindBuffer+glBufferData(vertices):buffer是真正放顶点数据的地方。
glEnableVertexAttribArray+glVertexAttribPointer+glDrawArrays
glVertexAttribPointer使用来上传顶点数据到显卡的方法;
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:指定每个顶点对应的坐标个数,可取2,3,4 */
[如果我们使用2d绘制,不加入深度(就是z),我们只要在这里写2就可以了。]
6)vertex Array object和 vertext buffer object《这里的都是vertext相关的,buffer不是framebuffer那个概念》
glBindBuffer(GL_ARRAY_BUFFER, buf1);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
这个过程就像一个中介人的作用,而中介人就是GL_ARRAY_BUFFER。我们可以这么想,glBindBuffer 设置了一个全局变量,然后glVertexAttribPointer读取了这个全局变量并把它存储在VAO中,这个全局变量就是GL_ARRAY_BUFFER。当调用完glVertexAttribPointer后,顶点属性已经知道了数据来源就是buf1,它们之间就会直接联系,而不需要在通过GL_ARRAY_BUFFER。
8.高级概念:
1)关于framebuffer是renderbuffer的管理者的观点总结: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中获取顶点、法线、颜色、纹理的值;注释非常详细。