Fix bug where meshes are rendered by vertex count

This commit is contained in:
Bailey Harrison 2023-01-05 13:50:51 +00:00
parent b2831e2b5d
commit cf99262dc8
3 changed files with 8 additions and 5 deletions

View File

@ -24,8 +24,6 @@ public:
Mesh(GFXDevice* gfx, const std::vector<Vertex>& vertices)
: m_gfx(gfx)
{
m_count = vertices.size();
m_vb = m_gfx->createBuffer(gfx::BufferType::VERTEX, vertices.size() * sizeof(Vertex), vertices.data());
std::vector<uint32_t> indices(m_count);
@ -33,13 +31,15 @@ public:
indices[i] = i;
}
m_ib = m_gfx->createBuffer(gfx::BufferType::INDEX, indices.size() * sizeof(uint32_t), indices.data());
m_count = indices.size();
}
Mesh(GFXDevice* gfx, const std::vector<Vertex>& vertices, const std::vector<uint32_t>& indices)
: m_gfx(gfx)
{
m_count = vertices.size();
m_vb = m_gfx->createBuffer(gfx::BufferType::VERTEX, vertices.size() * sizeof(Vertex), vertices.data());
m_ib = m_gfx->createBuffer(gfx::BufferType::INDEX, indices.size() * sizeof(uint32_t), indices.data());
m_count = indices.size();
}
~Mesh()
{

View File

@ -48,9 +48,12 @@ namespace engine {
for (uint32_t entity : m_entities) {
auto t = m_scene->getComponent<TransformComponent>(entity);
auto r = m_scene->getComponent<RenderableComponent>(entity);
DEBUG("rendering mesh: {}, parent: {}", t->tag, t->parent);
gfx->updateUniformBuffer(r->material->getShader()->getPipeline(), &projMatrix, sizeof(projMatrix), 0);
struct {

View File

@ -87,7 +87,7 @@ void playGame()
myScene->registerResourceManager<engine::resources::Texture>();
auto camera = myScene->createEntity("camera");
myScene->addComponent<CameraControllerComponent>(camera);
myScene->addComponent<CameraControllerComponent>(camera)->standingHeight = myScene->getComponent<engine::TransformComponent>(camera)->position.y = 2.0f;
myScene->getSystem<engine::RenderSystem>()->setCameraEntity(camera);
engine::resources::Shader::VertexParams vertParams{};
@ -108,7 +108,7 @@ void playGame()
auto keepTexture = myScene->addResource<engine::resources::Texture>("whiteTexture", std::move(whiteTexture));
auto keepShader = myScene->addResource<engine::resources::Shader>("theShader", std::move(theShader));
engine::util::loadMeshFromFile(myScene, app.getResourcePath("models/lego/lego.dae"));
engine::util::loadMeshFromFile(myScene, app.getResourcePath("models/astronaut/astronaut.dae"));
app.gameLoop();