Added a prepare step to the renderer , removed transform object and GPUBucket object, Added a mesh to the Render3DComponent

The renderer prepare uploads the necessary vertex data to the GPU
This commit is contained in:
2022-10-23 14:02:13 +02:00
parent bc1254e427
commit 99eb5282e5
7 changed files with 60 additions and 132 deletions

View File

@ -12,9 +12,7 @@
* Define globals
*/
Scene scene;
VertexArray va = VertexArray();
GpuBuffer vertexBuffer = GpuBuffer();
GpuBuffer elementBuffer = GpuBuffer();
BarinkEngine::Renderable* renderable;
BarinkEngine::SceneObject* object;
Entity cube;
@ -28,35 +26,12 @@ void Start() {
auto& render3DComponent = cube.AddComponent<BarinkEngine::Render3DComponent>();
auto importer = BarinkEngine::ModelImporter();
va.Create();
va.Bind();
object = importer.Import("build/Debug/Models/Cube.obj");
renderable = object->renderable;
render3DComponent.ElementCount = static_cast<unsigned int>(renderable->mesh->elements.size());
vertexBuffer.createBuffer();
vertexBuffer.Bind(false);
vertexBuffer.setBufferData((void*)&renderable->mesh->vertices[0], renderable->mesh->vertices.size() * sizeof(BarinkEngine::Vertex), false);
elementBuffer.createBuffer();
elementBuffer.Bind(true);
elementBuffer.setBufferData((void*)&renderable->mesh->elements[0], renderable->mesh->elements.size() * sizeof(unsigned int), true);
render3DComponent.mesh = *renderable->mesh;
va.AttachAttribute(0, 3, sizeof(BarinkEngine::Vertex));
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(BarinkEngine::Vertex), (void*)0);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
va.Unbind();
vertexBuffer.Unbind(false);
elementBuffer.Unbind(true);
render3DComponent.VAO = va.getID();
render3DComponent.IBO = elementBuffer.getBufferID();
render3DComponent.color = glm::vec3(1.0f, 0.0f, 0.0f);
std::cout << render3DComponent.ElementCount << std::endl;
renderer.Prepare(scene);
}
/*