美文网首页
OpenGL绘制步骤

OpenGL绘制步骤

作者: 傲骨天成科技 | 来源:发表于2020-01-14 16:16 被阅读0次

在开始做OpenGL的时候我们经常会很难记住绘制的流程,因此我今天总结入下:

  所用到的变量声明如下:
  1.着色器管理者
   GLShaderManager  shaderManager;
  2.模型矩阵堆栈
  GLMatrixStack  modelViewMatrix;
 3.投影矩阵堆栈
  GLMatrixStack   projectionMatrix;
4.视景体 :用来构造投影矩阵
   GLFrustum   viewFrustum;
5.观察者位置
   GLFrame  cameraFrame;
6.世界坐标位置
   GLFrame  objectFrame;
7.几何变换管道,用于存储和获取模型和投影矩阵堆栈
   GLGeometryTransform  transformPipeline;
8.三角形批次类   torusBatch这个暂时用来绘制甜甜圈
   GLTriangleBatch    torusBatch;


一、第一步设置SetupRC();

setupRC()是第一步操作,相当于我们写代码的时候的初始化过程。
在此步骤中进行的操作如下:

   1.设置背景色
   glClearColor(0.3f, 0.3f, 0.3f, 1.0f);

   2.初始化着色器管理者
   shaderManager.InitializeStockShaders();

   3.将观察者位置调整到视图之外,方便观看
   cameraFrame.MoveForward(-15);

   4.创建几何图形   甜甜圈
   gltMakeTorus(torusBatch,  1.0f,  0.3f,  52,  26);

二、第二步ChangeSize(int w, int h);

当视图第一次出现和窗口改变都会调用此方法: 此方法主要是为了设置视口大小和设置模型和投影的矩阵堆栈

  1.设置视口大小
   glViewport(0,0, w, h);
  
  2.设置视景体,目的是通过视景体得到投影矩阵堆栈
    viewFrustum.SetPerspective(35,  floorf(w)/floorf(h), 2, 20);

  3.得到投影矩阵堆栈
     projectionMatrix.LoadMatrix(viewFrustum.GetProjectionMatrix());
    
  4.设置模型矩阵堆栈  比如加载单元矩阵
    modelViewMatrix.LoadIdentity();
 
  5.把投影矩阵堆栈和模型矩阵堆栈放到几何变换中
     transformPipeline.SetMatrixStacks(modelViewMatrix, projectionMatrix);

三、第三步RenderScence(void); 召唤场景

每次绘制系统都会调用此方法

  1.清空缓冲区    颜色、深度、模板缓冲区
    glClear(GL_COLOR_BUFFER_BIT |  GL_DEPATCH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

  2.把模型矩阵进行压栈(压栈到世界坐标系)处理,做这步的目的是为了绘制好几个图形,所以要进行压栈和出栈
   modelViewMatrix.PushMatrix(objectFrame);

  3.通过着色器管理器通过固定管线绘制
     GLT_SHADER_FLAT  平面着色器
     transformPipeline.GetModelViewProjectionMatrix()  MVP
     vGreen  绘制的颜色
    shaderManager.UseStockShader(GL_SHADER_FLAT, transformPipeline.GetModelViewProjectionMatrix(),  vGreen);

  4.开始绘制
     torusBatch.Draw();

  5.出栈
     modelViewMatrix.PopMatrix();

  6.交换缓冲区进行渲染
     glutSwapBuffers();

最终结果如下图:


屏幕快照 2020-01-14 下午4.17.16.png

相关文章

网友评论

      本文标题:OpenGL绘制步骤

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