美文网首页
使用openGL实现一个用键盘控制的移动+旋转的正文形

使用openGL实现一个用键盘控制的移动+旋转的正文形

作者: 2012年低调 | 来源:发表于2018-02-10 19:14 被阅读0次

    1、继续上一个工程,修改顶点参数,将三角形改成正方形

    //blockSize 1/2边长

    GLfloatblockSize =0.2f;

    //指定正方形的顶点数据 x,y,z

    GLfloatvVerts[] = {

        -blockSize,-blockSize,0.0f,

       blockSize,-blockSize,0.0f,

       blockSize,blockSize,0.0f,

        -blockSize,blockSize,0.0f

    };

    voidsetupRC()

    {

       //1.设置清屏颜色

       glClearColor(0.33f,0.45f,0.12f,1.0f);

       //初始化固定管线

       shaderManager.InitializeStockShaders();

       triangleBatch.Begin(GL_TRIANGLE_FAN,4);

       triangleBatch.CopyVertexData3f(vVerts);

       triangleBatch.End();

    }

    2、使用旋转矩加平移矩阵想结合,用平面着色器完成绘制

    //利用矩阵帮助移动

       //mFinalTransform 结果矩阵

       //mTransformMatrix 平移矩阵

       //mRotationMatrix  旋转矩阵

       M3DMatrix44fmFinalTransform,mTransformMatrix,mRotationMatrix;

       //平移 x,y,z,w(缩放因子= 1)

       //3D中平移的原理与矩阵之间关系

       /*

         参数1:矩阵

         参数2、3、4:X,Y,Z上平移距离

         */

       m3dTranslationMatrix44(mTransformMatrix,xPos,yPos,0.0f);

       //增加难度! 一边移动,一边旋转

       staticfloatyRot =0.0f;

       /*

         参数1:矩阵

         参数2:弧度

         参数3:X:1,0 1:围绕X轴旋转,0不围绕X轴旋转

         参数4:Y:1,0

         参数5:Z:1,0

         */

       m3dRotationMatrix44(mRotationMatrix,m3dDegToRad(yRot),0.0f,0.0f,1.0f);

       //修改旋转度数

        yRot +=5.0f;

       //思考:结合2个矩阵的结果 平移矩阵 * 旋转矩阵 = 最终结果矩阵

       m3dMatrixMultiply44(mFinalTransform, mTransformMatrix, mRotationMatrix);

    3、运行,实现效果

    总结:主要使用了两个矩阵相结合,合成一个矩阵完成移动+旋转

    相关文章

      网友评论

          本文标题:使用openGL实现一个用键盘控制的移动+旋转的正文形

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