TerraForge3D  2.3.1
3D Terrain And Landscape Generator
Renderer.cpp
1#include "Renderer.h"
2#include <Texture2D.h>
3
4namespace Renderer
5{
6
7void RenderModel(Model *model, Camera *camera, FrameBuffer *framebuffer, Shader *shader, Texture2D *diffuse, glm::vec3 lightPosition, float *lightColor, float time)
8{
9 framebuffer->Begin();
10 shader->Bind();
11 shader->SetTime(&time);
12 shader->SetMPV(camera->pv);
13 shader->SetUniformMat4("_Model", model->modelMatrix);
14 shader->SetLightCol(lightColor);
15 shader->SetLightPos(lightPosition);
16 float tmp[3];
17 shader->SetUniform3f("_MousePos", tmp);
18 tmp[0] = 800;
19 tmp[1] = 600;
20 tmp[2] = 1;
21 shader->SetUniform3f("_Resolution", tmp);
22 diffuse->Bind(5);
23 shader->SetUniformi("_Diffuse", 5);
24 model->Render();
25 framebuffer->End();
26}
27
28void RenderModels(std::vector<Model *> models, Camera *camera, FrameBuffer *framebuffer, Shader *shader, std::vector<Texture2D *> diffuse, glm::vec3 lightPosition, float *lightColor, float time)
29{
30 if (models.size() != diffuse.size())
31 {
32 return;
33 }
34
35 framebuffer->Begin();
36
37 for (int i = 0; i < models.size(); i++)
38 {
39 shader->Bind();
40 shader->SetTime(&time);
41 shader->SetMPV(camera->pv);
42 shader->SetUniformMat4("_Model", models[i]->modelMatrix);
43 shader->SetLightCol(lightColor);
44 shader->SetLightPos(lightPosition);
45 float tmp[3];
46 shader->SetUniform3f("_MousePos", tmp);
47 tmp[0] = 800;
48 tmp[1] = 600;
49 tmp[2] = 1;
50 shader->SetUniform3f("_Resolution", tmp);
51 diffuse[i]->Bind(5);
52 shader->SetUniformi("_Diffuse", 5);
53 models[i]->Render();
54 }
55
56 framebuffer->End();
57}
58
59}
Definition: Camera.h:9
Definition: Model.h:9
Definition: Shader.h:7