OpenGL ES 案例08:GLKit使用索引绘图 + 纹理颜色混合

简介: OpenGL ES 案例08:GLKit使用索引绘图 + 纹理颜色混合

本案例是在OpenGL ES 案例06:GLKit使用索引绘图案例的基础上新增纹理与颜色的混合填充功能


相比GLSL案例的纹理颜色填充,GLKit中就相对比较简单很多,因为大部分代码apple都已经封装好了,我们只需要使用即可


整体案例的效果如下


image.png

整个案例也是OpenGL ES 案例06:GLKit使用索引绘图OpenGL ES 入门:GLKit加载图片案例综合的一个例子


在原有代码的基础上,需要修改的整体图示如下

image.png


主要也是在render渲染图形函数中新增纹理数据及操作


  • 顶点数据中增加纹理坐标
//1.顶点数据
       //前3个元素,是顶点数据;中间3个元素,是顶点颜色值,最后2个是纹理坐标
    GLfloat attrArr[] =
    {
        -0.5f, 0.5f, 0.0f,      1.0f, 0.0f, 1.0f,       0.0f, 1.0f,//左上
        0.5f, 0.5f, 0.0f,       1.0f, 0.0f, 1.0f,       1.0f, 1.0f,//右上
        -0.5f, -0.5f, 0.0f,     1.0f, 1.0f, 1.0f,       0.0f, 0.0f,//左下
        0.5f, -0.5f, 0.0f,      1.0f, 1.0f, 1.0f,       1.0f, 0.0f,//右下
        0.0f, 0.0f, 1.0f,       0.0f, 1.0f, 0.0f,       0.5f, 0.5f,//顶点
    };


  • 使用纹理数据,即将纹理坐标传入顶点着色器
    注:需要修改顶点、颜色读取时的总长度,否则绘制会有问题
//    ------使用纹理数据
    glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
    glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat)*8, (GLfloat*)NULL+6);
  • 获取纹理图片 & 加载纹理
//    ------获取纹理路路径
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"mouse" ofType:@"jpg"];
    NSDictionary *option = [NSDictionary dictionaryWithObjectsAndKeys:@"1", GLKTextureLoaderOriginBottomLeft, nil];
    GLKTextureInfo *info = [GLKTextureLoader textureWithContentsOfFile:filePath options:option error:nil];
  • 在effect中设置纹理相关信息
    //------着色器
    self.mEffect = [[GLKBaseEffect alloc] init];
    self.mEffect.texture2d0.enabled = GL_TRUE;
    self.mEffect.texture2d0.name = info.name;


相关文章
|
6月前
|
XML 小程序 Java
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)
120 0
|
存储 编解码 算法
Opengl ES之LUT滤镜(上)
Opengl ES之连载系列
449 0
|
数据安全/隐私保护 开发者
OpenGL ES 多目标渲染(MRT)
Opengl ES连载系列
315 0
|
数据安全/隐私保护 索引
Opengl ES之纹理数组
Opengl ES连载系列
255 0
|
缓存 C++
Opengl ES之FBO
Opengl ES连载系列
144 0
|
数据安全/隐私保护
Opengl ES之水印贴图
Opengl ES之连载系列
146 0
|
Java 数据安全/隐私保护 Android开发
Opengl ES之矩阵变换(下)
Opengl ES连载系列
128 0
|
Java API 数据安全/隐私保护
Opengl ES之矩阵变换(上)
Opengl ES连载系列
147 0
|
存储
Opengl ES之踩坑记
Opengl ES之连载系列
134 0
|
存储 编解码 算法
Opengl ES之RGB转NV21
Opengl ES连载系列
153 0