Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Render meshes
- {
- glEnable(GL_CULL_FACE);
- glEnable(GL_DEPTH_TEST);
- gl->pbrShader.Use();
- glUniformMatrix4fv(gl->pbrShader.projLoc, 1, GL_FALSE, projection.e);
- glUniformMatrix4fv(gl->pbrShader.viewLoc, 1, GL_FALSE, view.e);
- mat4 viewInverse = Mat4::InverseTransformNoScale(view);
- GLMesh* lastMesh = nullptr;
- GLMaterial* lastMaterial = nullptr;
- for (GLDrawCall& drawCall : gl->drawList.drawCalls)
- {
- mat4 modelView = view * drawCall.model;
- mat4 normalMatrix = Mat4::Transpose(drawCall.modelInverse * viewInverse);
- glUniformMatrix4fv(gl->pbrShader.modelViewLoc, 1, GL_FALSE, modelView.e);
- glUniformMatrix4fv(gl->pbrShader.normalMatrixLoc, 1, GL_FALSE, normalMatrix.e);
- if (drawCall.material != lastMaterial)
- {
- drawCall.material->BindTo(gl->pbrShader);
- lastMaterial = drawCall.material;
- }
- if (drawCall.mesh != lastMesh)
- {
- drawCall.mesh->Bind();
- lastMesh = drawCall.mesh;
- }
- drawCall.mesh->Draw();
- }
- }
- gl->skybox.Draw(projection, view);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement