mirror of
https://github.com/bailwillharr/engine.git
synced 2024-09-21 04:51:18 +00:00
Fix bug where meshes are rendered by vertex count
This commit is contained in:
parent
b2831e2b5d
commit
cf99262dc8
@ -24,8 +24,6 @@ public:
|
|||||||
Mesh(GFXDevice* gfx, const std::vector<Vertex>& vertices)
|
Mesh(GFXDevice* gfx, const std::vector<Vertex>& vertices)
|
||||||
: m_gfx(gfx)
|
: m_gfx(gfx)
|
||||||
{
|
{
|
||||||
m_count = vertices.size();
|
|
||||||
|
|
||||||
m_vb = m_gfx->createBuffer(gfx::BufferType::VERTEX, vertices.size() * sizeof(Vertex), vertices.data());
|
m_vb = m_gfx->createBuffer(gfx::BufferType::VERTEX, vertices.size() * sizeof(Vertex), vertices.data());
|
||||||
|
|
||||||
std::vector<uint32_t> indices(m_count);
|
std::vector<uint32_t> indices(m_count);
|
||||||
@ -33,13 +31,15 @@ public:
|
|||||||
indices[i] = i;
|
indices[i] = i;
|
||||||
}
|
}
|
||||||
m_ib = m_gfx->createBuffer(gfx::BufferType::INDEX, indices.size() * sizeof(uint32_t), indices.data());
|
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)
|
Mesh(GFXDevice* gfx, const std::vector<Vertex>& vertices, const std::vector<uint32_t>& indices)
|
||||||
: m_gfx(gfx)
|
: m_gfx(gfx)
|
||||||
{
|
{
|
||||||
m_count = vertices.size();
|
|
||||||
m_vb = m_gfx->createBuffer(gfx::BufferType::VERTEX, vertices.size() * sizeof(Vertex), vertices.data());
|
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_ib = m_gfx->createBuffer(gfx::BufferType::INDEX, indices.size() * sizeof(uint32_t), indices.data());
|
||||||
|
m_count = indices.size();
|
||||||
}
|
}
|
||||||
~Mesh()
|
~Mesh()
|
||||||
{
|
{
|
||||||
|
@ -48,9 +48,12 @@ namespace engine {
|
|||||||
|
|
||||||
for (uint32_t entity : m_entities) {
|
for (uint32_t entity : m_entities) {
|
||||||
|
|
||||||
|
|
||||||
auto t = m_scene->getComponent<TransformComponent>(entity);
|
auto t = m_scene->getComponent<TransformComponent>(entity);
|
||||||
auto r = m_scene->getComponent<RenderableComponent>(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);
|
gfx->updateUniformBuffer(r->material->getShader()->getPipeline(), &projMatrix, sizeof(projMatrix), 0);
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
|
@ -87,7 +87,7 @@ void playGame()
|
|||||||
myScene->registerResourceManager<engine::resources::Texture>();
|
myScene->registerResourceManager<engine::resources::Texture>();
|
||||||
|
|
||||||
auto camera = myScene->createEntity("camera");
|
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);
|
myScene->getSystem<engine::RenderSystem>()->setCameraEntity(camera);
|
||||||
|
|
||||||
engine::resources::Shader::VertexParams vertParams{};
|
engine::resources::Shader::VertexParams vertParams{};
|
||||||
@ -108,7 +108,7 @@ void playGame()
|
|||||||
auto keepTexture = myScene->addResource<engine::resources::Texture>("whiteTexture", std::move(whiteTexture));
|
auto keepTexture = myScene->addResource<engine::resources::Texture>("whiteTexture", std::move(whiteTexture));
|
||||||
auto keepShader = myScene->addResource<engine::resources::Shader>("theShader", std::move(theShader));
|
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();
|
app.gameLoop();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user