美文网首页
OpenGl综合案例(地板,大小球,公转,自转,移动)

OpenGl综合案例(地板,大小球,公转,自转,移动)

作者: 枫紫_6174 | 来源:发表于2020-07-20 10:30 被阅读0次

    一.总体效果图

            红球自转,蓝球围绕红球公转,并实现键盘按钮移动(推荐一款录屏并制作动图的软件---licecap,是一款屏幕录制工具,支持导出 GIF 动画图片格式,轻量级、使用简单,录制过程中可以随意改变录屏范围。运行后会以窗口的方式显示在桌面,拖动选取一个合适的大小范围。点击 Record 选取保存路径就开始录屏了,下载地址------https://474b.com/file/5288736-230664723

    总体效果图

    绘制流程图:

    绘制流程图

    二.绘制地板


    绘制地板 效果图

    三.绘制红球并自转


    绘制红球并自转 自转效果图

    特别说明:

                    1)黑色是因为我关闭了深度测试,为了让自转效果看的清楚一点

                    2)modelViewMatrix.PushMatrix()和modelViewMatrix.PopMatrix()压栈和出栈是成对出现,其目的是告诉GLShaderManager shaderManager; // 着色器管理器我要使用不同的批次类画不同的图形,所以在代码中你会看到着色管理器调用批次类出现了两次:

                                            //3.绘制地面

                                            shaderManager.UseStockShader(GLT_SHADER_FLAT, transformPipeline.GetModelViewProjectionMatrix(), vFloorColor);

                                            //8.指定合适的着色器(点光源着色器)

                                            shaderManager.UseStockShader(GLT_SHADER_POINT_LIGHT_DIFF, transformPipeline.GetModelViewMatrix(),

                                     transformPipeline.GetProjectionMatrix(), vLightPos, vTorusColor);

    不成对出现,会出现上一压栈的结果影响下一次图形绘制,特别注意出栈写的位置:

    出栈的位置

    四.绘制小蓝球


    绘制小蓝球 绘制蓝球

    五.绘制一个小蓝球并绕着红球公转,并让小蓝球自转


    //13. 让一个小篮球围绕大球公转自转

            modelViewMatrix.Rotate(yRot * -2.0f,0.0f,1.0f,0.0f);

            modelViewMatrix.Translate(0.8f, 0.0f, 0.0f);             shaderManager.UseStockShader(GLT_SHADER_POINT_LIGHT_DIFF,transformPipeline.GetModelViewMatrix(),transformPipeline.GetProjectionMatrix(),vLightPos,vSphereColor);

        sphereBatch.Draw();

        modelViewMatrix.PopMatrix();

    说明:开启了定时器,当前窗口会自动调用void RenderScene进行绘制,此时我们只需要改变这个小球的位置modelViewMatrix.Rotate(yRot * -2.0f,0.0f,1.0f,0.0f);控制小蓝球自转,modelViewMatrix.Translate(0.8f, 0.0f, 0.0f);  控制其位置,给观察者公转的视觉效果

    关闭深度测试效果图 开启深度测试效果图

    说明:开启和关闭主要是为了我们看清楚效果图

    六.移动

    移动 最终效果

    最后附上完整代码:链接: https://pan.baidu.com/s/1EfHD63f3hDBfd0fn0UYWNg 提取码: h7ew

    相关文章

      网友评论

          本文标题:OpenGl综合案例(地板,大小球,公转,自转,移动)

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