Как рендерить кадры в игровом цикле, используя матрицу модели? - PullRequest
0 голосов
/ 09 мая 2019

Я разрабатываю очень простой трехмерный игровой engine.my игровой цикл примерно такой:

void draw()
{
   shader->bindShader();
   for(entity in entityList)
   {
      mat4 modelMat=entity.getModelMat();
      shader->sendUniform("model_matrix",&modelMat);//sending model matrix to shader
      glDraw(...)//draw call
   }
}
void gameLoop()
{
   init();
   draw();//drawing objects for the first time
   while(true)//game loop
   {
       handlingEvents();//calculate model matrices based on inputs
       renderScene();//this function renders the scene on current frame
   }
}

и вот мой вершинный шейдер:

uniform mat4 projection_matrix;
uniform mat4 view_matrix;
uniform mat4 model_matrix;

void main()
{
gl_Position = projection_matrix*view_matrix*model_matrix*vec4(gl_Vertex.xyz,1);
}

в настоящее время я 'm рендеринг сцены, просто очистив все и нарисовав их снова с новыми матрицами моделей. Итак, мой вопрос, есть ли способ обновить каждый объект без очистки и рисования всей сцены в каждом кадре?

...