OPenGL ES _ 入门练习_003

[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)



1594482-90b71c5dccf53715.PNG

演示:


1594482-618726ddcfca1071.png
手机截图


学习目标

绘制一个移动的正方形


技术

使用OpenGL ES 1.0


实现思路

/*

*  步骤1: 创建一个 GLKViewController

*  步骤2: 创建一个EAGContext 跟踪我们所有的特定的状态,命令和资源

*  步骤3: 清除屏幕

*  步骤4: 创建投影坐标矩阵

*  步骤5: 创建模型视图矩阵

*  步骤6: 加载顶点数据

*  步骤7: 加载颜色数据

*  步骤8: 开始绘制

*/


代码实现部分:

/**

*  创建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 控制器实现的,这个类是苹果公司给我们提供的封装了一部分代码,我们的工作量少了很多.

- (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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值