Rendering a cube basics through ENTT
This commit is contained in:
@ -10,6 +10,8 @@ void Create();
|
||||
void Bind();
|
||||
void Unbind();
|
||||
|
||||
unsigned int getID() { return id; }
|
||||
|
||||
void Delete();
|
||||
|
||||
void AttachAttribute(unsigned int index, int size, int stride);
|
||||
|
@ -1,4 +1,6 @@
|
||||
#include "Renderer.h"
|
||||
#include "../Scene/Components.h"
|
||||
#include <glad/glad.h>
|
||||
|
||||
float Angle = 0.0;
|
||||
Camera cam = Camera(glm::vec3(16.0f, 0.0f, 0.0f), glm::vec3(0.0f, 0.0f, 0.0f), 90.0f);
|
||||
@ -14,7 +16,29 @@ BarinkEngine::Renderer::~Renderer()
|
||||
|
||||
|
||||
void BarinkEngine::Renderer::Render(Scene& scene)
|
||||
{}
|
||||
{
|
||||
auto group = scene.getReg().view<TransformComponent, Render3DComponent>();
|
||||
group.each([](auto entity , TransformComponent& trans, Render3DComponent& render)
|
||||
{
|
||||
glBindVertexArray(render.VAO);
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, render.IBO);
|
||||
|
||||
render.shader.Use();
|
||||
|
||||
render.shader.setUniformVec3("Color", render.color);
|
||||
|
||||
render.shader.setUniformMat4("M", glm::mat4(1.0f));
|
||||
render.shader.setUniformMat4("V", cam.GetViewMatrix());
|
||||
render.shader.setUniformMat4("P", projection);
|
||||
|
||||
|
||||
glDrawElements(GL_TRIANGLES, render.ElementCount,
|
||||
GL_UNSIGNED_INT, NULL);
|
||||
|
||||
glBindVertexArray(0);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -1,7 +1,11 @@
|
||||
#pragma once
|
||||
#include <glm/glm.hpp>
|
||||
#include "../Graphics/Primitives/Shader.h"
|
||||
|
||||
namespace BarinkEngine {
|
||||
struct IdentifierComponent {
|
||||
std::string name;
|
||||
};
|
||||
|
||||
struct TransformComponent {
|
||||
glm::mat4& transform = glm::mat4(1.0f);
|
||||
@ -17,7 +21,13 @@ namespace BarinkEngine {
|
||||
struct Render3DComponent {
|
||||
unsigned int VAO;
|
||||
unsigned int IBO;
|
||||
|
||||
unsigned int ElementCount;
|
||||
glm::vec3 color;
|
||||
Shader shader;
|
||||
Render3DComponent()
|
||||
: shader(Shader("build/Debug/test.vs", "build/Debug/test.fs") )
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct Render2DComponent {
|
||||
|
@ -10,10 +10,15 @@ public:
|
||||
|
||||
|
||||
template<class T >
|
||||
T AddComponent() {
|
||||
T& AddComponent() {
|
||||
return m_scene->m_registry.emplace<T>(m_entity);
|
||||
}
|
||||
|
||||
template<class T>
|
||||
T* GetComponent() {
|
||||
return m_scene->m_registry.try_get<T>(m_entity);
|
||||
}
|
||||
|
||||
private:
|
||||
entt::entity m_entity;
|
||||
Scene* m_scene;
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include "Scene.h"
|
||||
#include "Entity.h"
|
||||
#include "Components.h"
|
||||
Scene::Scene()
|
||||
{
|
||||
}
|
||||
@ -9,6 +10,12 @@ Scene::~Scene()
|
||||
|
||||
Entity Scene::AddEntity(std::string& name)
|
||||
{
|
||||
return { m_registry.create(), this };
|
||||
Entity entity = { m_registry.create(), this };
|
||||
|
||||
entity.AddComponent<BarinkEngine::IdentifierComponent>();
|
||||
entity.AddComponent<BarinkEngine::TransformComponent>();
|
||||
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
@ -7,5 +7,5 @@ uniform sampler2D Texture;
|
||||
|
||||
|
||||
void main(){
|
||||
FragColor = vec4(1.0f, 0.0f, 0.0f , 1.0f); // mix ( texture(Texture, TexCoord), vec4(Color, 1.0f), 1.0f);
|
||||
FragColor = vec4(color , 1.0f); // mix ( texture(Texture, TexCoord), vec4(Color, 1.0f), 1.0f);
|
||||
}
|
Reference in New Issue
Block a user