美文网首页
OpenGL案例综合解析

OpenGL案例综合解析

作者: 爱看书de图图 | 来源:发表于2020-07-20 10:02 被阅读0次

  之前讲了很多关于OpenGL相关的案例,接下来用一个综合的案例,来熟悉一下OpenGL相关的API,以便于更深入的了解OpenGL相关的使用。
  可以先看一下效果图

效果图
  整体流程图如下所示
总体流程图.jpeg
在绘制出整体效果之前,我们把总的流程分为四步:
  • 地板
  • 打球带自传
  • 小球(包含50个动态小球+一个围绕大球公转的小球)
  • 移动
      相信我们之前的案例解析中,大家对于这几个函数内部的使用,已经非常熟悉,如果不熟悉的大家可以翻看我以前的博客,绘制正放形
地板
 //3. 地板数据(物体坐标系)
    floorBatch.Begin(GL_LINES, 324);
    for(GLfloat x = -20.0; x <= 20.0f; x+= 0.5) {
        floorBatch.Vertex3f(x, -0.55f, 20.0f);
        floorBatch.Vertex3f(x, -0.55f, -20.0f);
        
        floorBatch.Vertex3f(20.0f, -0.55f, x);
        floorBatch.Vertex3f(-20.0f, -0.55f, x);
    }
    floorBatch.End();
大球

  绘制过程中,其实跟其他的案例没有什么区别,只是多了个定时器设置,让大球和要公转的小球自动的旋转。相似的代码我这里就不在叙述,我这里只列出来函数中跟以前不太一样的地方加以注释,大家有什么都可以看Demo

    // 动画
    static CStopWatch rotTimer;
    float yRot = rotTimer.GetElapsedSeconds()*60.0f;
    //大球自传
    modelViewMatrix.PushMatrix();
    modelViewMatrix.Rotate(yRot, 0, 1, 0);
小球
    //8. 小球
    for (int i = 0; i < NUM_SPHERES; i++) {
        modelViewMatrix.PushMatrix();
        modelViewMatrix.MultMatrix(spheres[i]);
        shaderManager.UseStockShader(GLT_SHADER_POINT_LIGHT_DIFF,transformPipeline.GetModelViewMatrix(),transformPipeline.GetProjectionMatrix(),vLightPos,vSpereColor);
        sphereBatch.Draw();
        modelViewMatrix.PopMatrix();
    }
公转的小球

  这里平移小球是为了让公转可视化,因为小球的位置和大球是重叠的。

    //9.让一个小球围着大球公转
    modelViewMatrix.Rotate(yRot * -2.0f, 0, 1, 0);
    modelViewMatrix.Translate(0.8f, 0.0f, 0.0f);

详细Demo

相关文章

  • OpenGL案例综合解析

      之前讲了很多关于OpenGL相关的案例,接下来用一个综合的案例,来熟悉一下OpenGL相关的API,以便于更深...

  • 案例06:大球自转+小球公转+移动

    OpenGL + OpenGL ES +Metal 系列文章汇总 这个案例是OpenGL中的一个比较经典的综合案例...

  • OpenGL(九)-- 综合案例(公、自转)

    OpenGL(九)-- 综合案例(公、自转) 相信学习过OpenGL的同学应该过玩过这个经典案例:总和案例.gif...

  • OpenGL综合案例

    今天我们来做一个关于OpenGL的一个综合案例,里面包含了点,线,三角形,金字塔等图形的绘制。 需要准备的东西之前...

  • OpenGL 综合案例

    在绘制之前,我们先来介绍下一下几个头文件的作用。 接下来我们需要在外部声明几个全局变量。 绘制地板 main函数工...

  • OpenGL 综合案例

    先看结果 核心代码 栈的机制 在changeSize()函数中,我们加载了投影矩阵,并把投影矩阵压入管道trans...

  • OpenGL综合案例

    OpenGL已经学习了一段时间,现在进行一下综合整理工作。 绘制地板 以下是详细代码及注释,这里不再做一一解释,这...

  • OpenGL 综合案例

    结合前面学到的知识,做一个球公转自转的综合程序,代码如下: 运行后效果图

  • OpenGL综合案例

    实现效果 学习OpenGL也有一段时间了。今天使用三个批次类来完成一个球体世界的demo; 球体世界网格层面 网格...

  • OpenGL案例05:大球自转+小球公转+移动

    这个案例是OpenGL中的一个比较经典的综合案例,结合了OpenGL中大部分知识点,下面就来了解下这个案例 先来看...

网友评论

      本文标题:OpenGL案例综合解析

      本文链接:https://www.haomeiwen.com/subject/yhxrkktx.html