前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OPenGL ES _ 入门练习_003

OPenGL ES _ 入门练习_003

作者头像
酷走天涯
发布2022-05-13 16:19:21
2760
发布2022-05-13 16:19:21
举报

[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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档