iOS视觉

十六 案例:隧道(纹理添加)

2020-08-05  本文已影响0人  王俏

隧道案例

1. 效果图

image

2. 实现分析

实际上是在一个黑背景上绘制了四个面(两个侧面+地面+顶面)

image
image
image
image

3. 代码实现流程

3.1 SetupRC函数

1)设置背景颜色 glClearColor

2)初始化着色器管理器

3)shaderManager.InitializeStockShaders();

4)初始化3个纹理(顶面+侧面+地面)
初始化纹理流程

image image

5)开启深度测试 glEnable(GL_DEPTH_TEST)

6)用地板批次类设置地板顶点数据和图元组成方式,以及纹理映射关系(MultiTexCoord2f)floorBatch ceilingBatch leftWallBatch rightWallBatch(注意:使用三角形批次类绘制图像时,不需要设置顶点和纹理映射关系,直接配置三角形批次类,使用时进行纹理绑定即可)

floorBatch.Begin(GL_TRIANGLE_STRIP, 28, 1);//7个四边形,每个四边形4个顶点,共28个顶点
        //Z表示深度,隧道的深度
    for(z = 60.0f; z >= 0.0f; z -=10.0f)
        {
        floorBatch.MultiTexCoord2f(0, 0.0f, 0.0f);
        floorBatch.Vertex3f(-10.0f, -10.0f, z);

        floorBatch.MultiTexCoord2f(0, 1.0f, 0.0f);
        floorBatch.Vertex3f(10.0f, -10.0f, z);

        floorBatch.MultiTexCoord2f(0, 0.0f, 1.0f);
        floorBatch.Vertex3f(-10.0f, -10.0f, z - 10.0f);

        floorBatch.MultiTexCoord2f(0, 1.0f, 1.0f);
        floorBatch.Vertex3f(10.0f, -10.0f, z - 10.0f);
        }
    floorBatch.End();

3.2 RenderScene

注意:渲染时绑定纹理流程 glBindTexture->配置纹理替换矩阵着色器->绘制图像


image

4. 完整代码实现 https://github.com/wq89816/TheTunnel

上一篇下一篇

猜你喜欢

热点阅读