Я разрабатываю очень простой трехмерный игровой 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 рендеринг сцены, просто очистив все и нарисовав их снова с новыми матрицами моделей. Итак, мой вопрос, есть ли способ обновить каждый объект без очистки и рисования всей сцены в каждом кадре?