[OpenGL ES _ 入门_01](http://www.jianshu.com/p/f66906b27819)
[OpenGL ES _ 入门_02](http://www.jianshu.com/p/dc49c946438e)
[OpenGL ES _ 入门_03](http://www.jianshu.com/p/00b5be729e4b)
[OpenGL ES _ 入门_04](http://www.jianshu.com/p/516b0b8be9d8)
[OpenGL ES _ 入门_05](http://www.jianshu.com/p/08c51c298d47)
[OpenGL ES _ 入门练习_01](http://www.jianshu.com/p/eebaf64e3e0a)
[OpenGL ES _ 入门练习_02](http://www.jianshu.com/p/6155d60dab20)
[OpenGL ES _ 入门练习_03](http://www.jianshu.com/p/36d9dac03345)
[OpenGL ES _ 入门练习_04](http://www.jianshu.com/p/1ca30e9387dd)
[OpenGL ES _ 入门练习_05](http://www.jianshu.com/p/ac9375962f34)
[OpenGL ES _ 入门练习_06](http://www.jianshu.com/p/c63dc219f7a0)
[OpenGL ES _ 着色器 _ 介绍](http://www.jianshu.com/p/309d489bc344)
[OpenGL ES _ 着色器 _ 程序](http://www.jianshu.com/p/ed0c617bcd67)
[OpenGL ES _ 着色器 _ 语法](http://www.jianshu.com/p/c5b89b294995)
[OpenGL ES_着色器_纹理图像](http://www.jianshu.com/p/8c0ad4e3e40f)
[OpenGL ES_着色器_预处理](http://www.jianshu.com/p/5e9837b0b219)
[OpenGL ES_着色器_顶点着色器详解](http://www.jianshu.com/p/9d7dca6b70c7)
[OpenGL ES_着色器_片断着色器详解](http://www.jianshu.com/p/55461927c419 )
[OpenGL ES_着色器_实战01](http://www.jianshu.com/p/18d6b37363c8)
[OpenGL ES_着色器_实战02](http://www.jianshu.com/p/45d959c8f1db)
[OpenGL ES_着色器_实战03](http://www.jianshu.com/p/0f740901da59)
演示:
手机截图
学习目标
绘制一个移动的正方形
技术
使用OpenGL ES 1.0
实现思路
代码语言:javascript复制/*
* 步骤1: 创建一个 GLKViewController
* 步骤2: 创建一个EAGContext 跟踪我们所有的特定的状态,命令和资源
* 步骤3: 清除屏幕
* 步骤4: 创建投影坐标矩阵
* 步骤5: 创建模型视图矩阵
* 步骤6: 加载顶点数据
* 步骤7: 加载颜色数据
* 步骤8: 开始绘制
*/
代码实现部分:
代码语言:javascript复制/**
* 创建EAGContext
*/
- (void)createEagContext{
self.eagContex = [[EAGLContext alloc]initWithAPI:kEAGLRenderingAPIOpenGLES1];
[EAGLContext setCurrentContext:self.eagContex];
}
/**
* 配置view
*/
-(void)configure{
GLKView *view = (GLKView*)self.view;
view.context = self.eagContex;
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
}
/**
* 清除屏幕
*/
-(void)clear{
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
}
/**
* 创建投影坐标
*/
-(void)initProjectionMatrix{
glMatrixMode(GL_PROJECTION); // 设置投影模式
glLoadIdentity(); // 导入
}
/**
* 创建自身坐标
*/
-(void)initModelView{
static float transY = 0.0;
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0, (GLfloat)(sinf(transY)/2.0), 0.0);
transY = 0.075f;
}
/**
* 加载顶点数据
*/
-(void)loadVetexData{
glVertexPointer(2, GL_FLOAT, 0, squareVertices);
glEnableClientState(GL_VERTEX_ARRAY);
}
/**
* 加载颜色数据
*/
-(void)loadColorData{
glColorPointer(4, GL_UNSIGNED_BYTE, 0, squareColors);
glEnableClientState(GL_COLOR_ARRAY);
}
/**
* 开始绘制
*/
-(void)draw{
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
说明:
我们使用的GLKViewController 控制器实现的,这个类是苹果公司给我们提供的封装了一部分代码,我们的工作量少了很多.
代码语言:javascript复制- (void)viewDidLoad {
[super viewDidLoad];
[self createEagContext]; // 2
[self configure];
}
// GLKViewController 提供了一个回调函数,把我们的加载绘制代码写在里面即可完成
-(void)glkView:(GLKView *)view drawInRect:(CGRect)rect{
[self clear]; //3
[self initProjectionMatrix]; //4
[self initModelView];//5
[self loadVetexData];//6
[self loadColorData];//7
[self draw];//8
}
代码地址:https://github.com/XJALYN/OpenGLES_003