Moving to a single renderer instance system

This commit is contained in:
2022-10-08 15:34:02 +02:00
parent 3974889f7e
commit b03b82272f
19 changed files with 201 additions and 138 deletions

View File

@ -10,7 +10,6 @@
/*
* Define globals
*/
Camera* cam;
Shader* shader;
char* code = new char[254];
@ -21,7 +20,8 @@ const std::string fragmentShaderSource = "../build/SandboxApplication/Debug/test
BarinkEngine::ModelImporter* MI = new BarinkEngine::ModelImporter();
Scene* Level1;
// BarinkEngine::SceneObject* cube;
BarinkEngine::Renderer* renderer;
BarinkEngine::SceneObject* cube;
/*
* Runs once at startup
* - USe to initialize the game/sandbox/demo
@ -34,30 +34,29 @@ void Start() {
std::string levelName("Test Level");
Level1 = SceneManager::CreateScene(levelName);
SceneManager::LoadScene(*Level1);
shader = new Shader(vertexShaderSource, fragmentShaderSource);
// Create a cube node
// Load a model
auto cube = MI->Import("../build/SandboxApplication/Debug/Models/Cube.obj");
cube = MI->Import("../build/SandboxApplication/Debug/Models/Cube.obj");
cube->renderable->material = new Material(*shader);
// What is in cube now ??
std::cout << "mesh vertices: " << cube->renderable->mesh->vertices.size() << std::endl;
std::cout << "mesh elements: " << cube->renderable->mesh->elements.size() << std::endl;
Level1->GetRoot().addChild(*cube);
std::string groupName("Nested-Group");
auto testGroup = new Group(groupName);
Level1->GetRoot().addChild( *testGroup);
std::string group2Name("Nested-Group2");
auto testGroup2 = new Group(group2Name);
Level1->GetRoot().addChild(*testGroup2);
// Walk scene graph
PrintSceneTree(Level1->GetRoot(),0);
shader = new Shader(vertexShaderSource, fragmentShaderSource);
cam = new Camera(glm::vec3(0.0f, 1.5f, 0.0f), glm::vec3(0.0f, 0.0f, 0.0f), 90.0f);
memset(code, '\0', 254);
}
// TODO: Move to runtime/ Engine
renderer = new BarinkEngine::Renderer();
// NOTE: Submits should later be done through walking the sceneTree
renderer->Submit(cube->renderable);
}
/*
* Runs every frame
@ -74,7 +73,7 @@ void ImmediateGraphicsDraw() {
ShowStats();
// Show different tooling for this specific sandbox
CameraTool(cam);
// CameraTool(cam);
ScriptingTool(code);
SceneExplorer(*Level1, "Scene Explorer");
@ -87,26 +86,9 @@ void ImmediateGraphicsDraw() {
*/
void Update()
{
/*
* NOTE: this needs to move to the renderer
* Render code should not appear in the sandbox file
*/
//glm::mat4 projection = glm::perspective(glm::radians(cam->Zoom), (800.0f / 600.0f), 0.001f, 100.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
shader->Use();
//shader->setUniformMat4("P", projection);
//shader->setUniformMat4("M", CalculateModelMat(cube->transform));
shader->setUniformMat4("V", cam->GetViewMatrix());
//cube->renderable->material->Apply();
renderer->Render();
//Cube->Draw();
}
/*
@ -115,5 +97,6 @@ void Update()
*/
void Stop() {
delete MI;
delete renderer;
delete shader;
}