美文网首页
OpenGL:世界球体(移动,公转,自转)

OpenGL:世界球体(移动,公转,自转)

作者: Neal_f | 来源:发表于2018-03-30 11:28 被阅读0次

OpenGL: 世界球体(移动,公转,自转)

image.png

void SetupRC()

  1. 绘制地板

很多个矩形组成

   //绘制地板
   floorBatch.Begin(GL_LINES, 300);
   for (GLfloat x = -30; x <= 30; x += 0.5) {
       floorBatch.Vertex3f(x, -0.55f, 30.0f);
       floorBatch.Vertex3f(x, -0.55f, -30.0f);

       floorBatch.Vertex3f(30.0f, -0.55f, x);
       floorBatch.Vertex3f(-30.0f, -0.55f, x);

   }
   floorBatch.End();
  1. 绘制花托

void gltMakeTorus(GLTriangleBatch& torusBatch, GLfloat majorRadius, GLfloat minorRadius, GLint numMajor, GLint numMinor)

//绘制花托
   gltMakeTorus(torusBatch, 0.4f, 0.15f, 30, 30);
  1. 绘制球体
   //绘制球体
   gltMakeSphere(sphereBatch, 0.1f, 26, 13);

void RenderScene(void)
花托自转

    modelViewMatrix.Rotate(yRot, 0.0f, 1.0f, 0.0f);

    //绘制花托
    shaderManager.UseStockShader(GLT_SHADER_FLAT,transformPipeline.GetModelViewProjectionMatrix(),vTorusColor);
    torusBatch.Draw();

球体公转

   //绘制公转
    modelViewMatrix.Rotate(yRot * -0.2f, 0.0f, 1.0f, 0.0f);
    modelViewMatrix.Translate(0.8f, 0.0f, 0.0f);
    shaderManager.UseStockShader(GLT_SHADER_FLAT,transformPipeline.GetModelViewProjectionMatrix(),vSphereColor);
    sphereBatch.Draw();

世界坐标系移动

void SpecialKeys(int key,int x,int y)
{

    float linar = 0.1f;
    float angular = float(m3dDegToRad(0.5f));

    if (key == GLUT_KEY_UP) {
        cameraFrame.MoveForward(linar);
    }
    else if(key == GLUT_KEY_DOWN){
        cameraFrame.MoveForward(-linar);
    }
    else if(key == GLUT_KEY_LEFT){
        cameraFrame.RotateWorld(angular, 0.0f, 1.0f, 0.0f);
    }
    else if(key == GLUT_KEY_RIGHT){
        cameraFrame.RotateWorld(-angular, 0.0f, 1.0f, 0.0f);
    }

}

代码:GitHub:(稍后上传)

相关文章

  • OpenGL:世界球体(移动,公转,自转)

    OpenGL: 世界球体(移动,公转,自转) void SetupRC() 绘制地板 很多个矩形组成 绘制花托 v...

  • OpenGL 球体公转+自转案例

    声明变量 声明一个着色器管理器实例,为模型视图矩阵和投影矩阵声明GLMatrixStack实例,使用GLFrust...

  • OpenGL案例 -- 球体自转和公转

    初始化 main()中注册一系列回调和初始化方法 ChangeSize()设置视图大小、投影矩阵、变换管道 绘制地...

  • 案例09:球体世界

    OpenGL + OpenGL ES +Metal 系列文章汇总 本案例是基于案例06:大球自转+小球公转+移动的...

  • OpenGL-15-案例6:球体世界(自转+公转)

    我们利用前门所学到的OpenGL的知识来写一个综合案例 一、效果图 二、流程图 三、源码 四、注意事项 着色器使用...

  • OpenGl 球体的公转,自传,移动

    绘制的流程:根据特殊键(SpeacialKeys)移动位置观看效果 ChangeSize函数:自定义函数,当屏幕大...

  • OpenGL案例01

    案例1:绘制甜甜圈自转+小球公转+移动,达到如下效果,这个案例属于OpenGL中比较经典的案例,结合了OpenGL...

  • 案例05:球的自转

    OpenGL + OpenGL ES +Metal 系列文章汇总 利用OpenGL中定时器,实现球体自转的效果,效...

  • OpenGL之 公转自转

    本篇将会介绍一个大球的自转以及一个小球围绕大球公转的demo,效果如下图: 实现过程 如上图所示,整个项目的基本流...

  • OpenGL纹理下的球体世界

    一.先看看整体效果 二.绘制流程 在OpenGl综合案例(地板,大小球,公转,自转,移动)文章中,我们绘制了大小球...

网友评论

      本文标题:OpenGL:世界球体(移动,公转,自转)

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