Redering cube in editor
This commit is contained in:
@ -8,7 +8,7 @@ int main(int argc, char* argv[]) {
|
||||
EngineInstrumentation::PerfomanceSamplerInit();
|
||||
|
||||
// Startup services
|
||||
BarinkWindow MainWindow = BarinkWindow(800, 600);
|
||||
BarinkWindow MainWindow = BarinkWindow(1200, 700);
|
||||
|
||||
renderer = BarinkEngine::Renderer();
|
||||
InputSystem = BarinkEngine::InputManager();
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include "imgui.h"
|
||||
#include "backends/imgui_impl_opengl3.h"
|
||||
#include <backends/imgui_impl_glfw.h>
|
||||
#include "../../libs/guizmo/ImGuizmo.h"
|
||||
#include "../BarinkEngine.h"
|
||||
|
||||
GUIManager::GUIManager(BarinkWindow* window)
|
||||
@ -35,8 +36,17 @@ void GUIManager::Render()
|
||||
|
||||
ImGui::NewFrame();
|
||||
|
||||
ImGuizmo::SetOrthographic(true);
|
||||
ImGuizmo::BeginFrame();
|
||||
|
||||
|
||||
|
||||
ImmediateGraphicsDraw();
|
||||
|
||||
|
||||
|
||||
ImGui::EndFrame();
|
||||
|
||||
|
||||
ImGui::Render();
|
||||
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
|
||||
|
@ -1,15 +1,15 @@
|
||||
#include "Buffer.h"
|
||||
|
||||
|
||||
int GpuBuffer::getBufferID() {
|
||||
int Buffer::getBufferID() {
|
||||
return id;
|
||||
}
|
||||
|
||||
void GpuBuffer::createBuffer() {
|
||||
void Buffer::createBuffer() {
|
||||
glGenBuffers(1, (GLuint*) &id);
|
||||
}
|
||||
|
||||
void GpuBuffer::setBufferData(void* data, size_t dataSize, bool elementBuffer = false ) {
|
||||
void Buffer::setBufferData(void* data, size_t dataSize, bool elementBuffer = false ) {
|
||||
|
||||
if (elementBuffer) {
|
||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, dataSize, data, GL_STATIC_DRAW);
|
||||
@ -21,7 +21,7 @@ void GpuBuffer::setBufferData(void* data, size_t dataSize, bool elementBuffer =
|
||||
|
||||
}
|
||||
|
||||
void GpuBuffer::Bind(bool elementBuffer = false ) {
|
||||
void Buffer::Bind(bool elementBuffer = false ) {
|
||||
if (elementBuffer) {
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id);
|
||||
|
||||
@ -32,7 +32,7 @@ void GpuBuffer::Bind(bool elementBuffer = false ) {
|
||||
}
|
||||
}
|
||||
|
||||
void GpuBuffer::Unbind(bool elementBuffer = false) {
|
||||
void Buffer::Unbind(bool elementBuffer = false) {
|
||||
if (elementBuffer) {
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
}
|
||||
@ -42,6 +42,6 @@ void GpuBuffer::Unbind(bool elementBuffer = false) {
|
||||
}
|
||||
}
|
||||
|
||||
void GpuBuffer::Delete() {
|
||||
void Buffer::Delete() {
|
||||
glDeleteBuffers(1, (GLuint*) &id);
|
||||
}
|
@ -1,8 +1,7 @@
|
||||
#pragma once
|
||||
#include <glad/glad.h>
|
||||
class GpuBuffer {
|
||||
private:
|
||||
unsigned int id;
|
||||
class Buffer {
|
||||
|
||||
public:
|
||||
|
||||
int getBufferID();
|
||||
@ -16,4 +15,7 @@ public:
|
||||
|
||||
void Delete();
|
||||
|
||||
private:
|
||||
unsigned int id;
|
||||
|
||||
};
|
@ -9,24 +9,44 @@ Framebuffer::Framebuffer()
|
||||
// Create a colour texture!
|
||||
glGenTextures(1, &ColourAttachment);
|
||||
glBindTexture(GL_TEXTURE_2D, ColourAttachment);
|
||||
glTexImage2D(GL_TEXTURE_2D, 1, GL_RGB, 800, 600, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
|
||||
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 600, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, ColourAttachment, 0);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
|
||||
// Create a depth buffer
|
||||
glGenRenderbuffers(1, &DepthAttachment);
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, DepthAttachment);
|
||||
glGenTextures(1, &DepthAttachment);
|
||||
glBindTexture(GL_TEXTURE_2D, DepthAttachment);
|
||||
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, 800, 600);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, 800, 600, 0, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL);
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
glFramebufferRenderbuffer(GL_RENDERBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, DepthAttachment);
|
||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, DepthAttachment, 0);
|
||||
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, 0);
|
||||
|
||||
/*
|
||||
* // Render buffer
|
||||
glGenRenderbuffers(1, &DepthAttachment);
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, DepthAttachment);
|
||||
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, 800, 600);
|
||||
|
||||
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, 0);
|
||||
|
||||
glFramebufferRenderbuffer(GL_RENDERBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, DepthAttachment);
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -39,6 +59,8 @@ Framebuffer::Framebuffer()
|
||||
}
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
|
||||
|
||||
}
|
||||
|
||||
Framebuffer::~Framebuffer()
|
||||
|
@ -8,13 +8,14 @@ public:
|
||||
Framebuffer();
|
||||
~Framebuffer();
|
||||
|
||||
unsigned int GetId() { return Id; }
|
||||
unsigned int GetColourAttachment() { return ColourAttachment; }
|
||||
GLuint GetId() { return Id; }
|
||||
GLuint GetColourAttachment() { return ColourAttachment; }
|
||||
GLuint GetDepthAttachment() { return DepthAttachment; }
|
||||
|
||||
private:
|
||||
unsigned int Id = 0;
|
||||
unsigned int ColourAttachment = 0;
|
||||
unsigned int DepthAttachment = 0;
|
||||
GLuint Id = 0;
|
||||
GLuint ColourAttachment = 0;
|
||||
GLuint DepthAttachment = 0;
|
||||
|
||||
|
||||
};
|
31
BarinkEngine/src/Graphics/Memory/UniformBuffer.cpp
Normal file
31
BarinkEngine/src/Graphics/Memory/UniformBuffer.cpp
Normal file
@ -0,0 +1,31 @@
|
||||
#include "UniformBuffer.h"
|
||||
#include <glad/glad.h>
|
||||
UniformBuffer::UniformBuffer(unsigned int size)
|
||||
{
|
||||
glGenBuffers(1, &Id );
|
||||
glBindBuffer(GL_ARRAY_BUFFER, Id);
|
||||
glBufferData(GL_ARRAY_BUFFER, size, nullptr, GL_DYNAMIC_DRAW);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
}
|
||||
|
||||
UniformBuffer::~UniformBuffer()
|
||||
{
|
||||
glDeleteBuffers(1, &Id);
|
||||
}
|
||||
|
||||
|
||||
void UniformBuffer::setData( unsigned int offset , unsigned int size , void* data)
|
||||
{
|
||||
glBindBuffer(GL_ARRAY_BUFFER, Id);
|
||||
glBufferSubData(GL_ARRAY_BUFFER, offset , size, data);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
}
|
||||
|
||||
void UniformBuffer::setDescriptor(unsigned int index, unsigned int size , unsigned int stride, void* pointer)
|
||||
{
|
||||
glBindBuffer(GL_ARRAY_BUFFER, Id);
|
||||
glVertexAttribPointer(index, size, GL_FLOAT, GL_FALSE, stride, pointer);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
}
|
||||
|
||||
|
15
BarinkEngine/src/Graphics/Memory/UniformBuffer.h
Normal file
15
BarinkEngine/src/Graphics/Memory/UniformBuffer.h
Normal file
@ -0,0 +1,15 @@
|
||||
#pragma once
|
||||
|
||||
class UniformBuffer {
|
||||
public:
|
||||
|
||||
UniformBuffer (unsigned int size);
|
||||
~UniformBuffer();
|
||||
void setData(unsigned int offset, unsigned int size, void* data);
|
||||
void setDescriptor(unsigned int index, unsigned int size, unsigned int stride, void* pointer);
|
||||
|
||||
|
||||
private:
|
||||
unsigned int Id;
|
||||
|
||||
};
|
@ -22,8 +22,8 @@ private:
|
||||
std::vector<unsigned int > indices;
|
||||
|
||||
|
||||
GpuBuffer vertexBuffer;
|
||||
GpuBuffer elementBuffer;
|
||||
Buffer vertexBuffer;
|
||||
Buffer elementBuffer;
|
||||
|
||||
VertexArray VAO;
|
||||
|
||||
|
@ -16,8 +16,8 @@ void BarinkEngine::Renderer::Prepare(Scene& scene ) {
|
||||
auto group = scene.getReg().view<BarinkEngine::Render3DComponent>();
|
||||
group.each([](auto enity, BarinkEngine::Render3DComponent& renderComponent) {
|
||||
VertexArray va = VertexArray();
|
||||
GpuBuffer vertexBuffer = GpuBuffer();
|
||||
GpuBuffer elementBuffer = GpuBuffer();
|
||||
Buffer vertexBuffer = Buffer();
|
||||
Buffer elementBuffer = Buffer();
|
||||
|
||||
va.Create();
|
||||
va.Bind();
|
||||
@ -45,6 +45,8 @@ void BarinkEngine::Renderer::Prepare(Scene& scene ) {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
void BarinkEngine::Renderer::Render(Scene& scene)
|
||||
{
|
||||
auto group = scene.getReg().view<TransformComponent, Render3DComponent>();
|
||||
@ -66,7 +68,7 @@ void BarinkEngine::Renderer::Render(Scene& scene)
|
||||
renderComponent.shader.setUniformMat4("V", cam.GetViewMatrix());
|
||||
renderComponent.shader.setUniformMat4("P", projection);
|
||||
|
||||
|
||||
//std::cout << "Draw " << renderComponent.mesh.elements.size() << " elements" << std::endl;
|
||||
glDrawElements(GL_TRIANGLES, static_cast<unsigned int>(renderComponent.mesh.elements.size()) ,
|
||||
GL_UNSIGNED_INT, NULL);
|
||||
|
||||
@ -75,5 +77,17 @@ void BarinkEngine::Renderer::Render(Scene& scene)
|
||||
|
||||
}
|
||||
|
||||
void Render(Framebuffer& framebuffer)
|
||||
{}
|
||||
void BarinkEngine::Renderer::Render(Framebuffer& framebuffer, Scene& scene)
|
||||
{
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer.GetId());
|
||||
|
||||
glClearColor(.5f, .0f, .5f, 1.0f);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
Render(scene);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -22,6 +22,6 @@ namespace BarinkEngine {
|
||||
void Prepare(Scene& scene);
|
||||
void Render(Scene& scene );
|
||||
|
||||
void Render(Framebuffer& framebuffer);
|
||||
void Render(Framebuffer& framebuffer, Scene& scene);
|
||||
};
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include "src/PerfCounter.h"
|
||||
#include "PerfCounter.h"
|
||||
#include <imgui.h>
|
||||
#include <iostream>
|
||||
|
||||
@ -66,5 +66,5 @@ void PerfSampler::Stop()
|
||||
|
||||
auto ms = durationInuSeconds * 0.001f;
|
||||
|
||||
std::cout << "[" << name << "]" << "Took: " << durationInuSeconds << " us (" << ms << " ms)" << std::endl;
|
||||
// std::cout << "[" << name << "]" << "Took: " << durationInuSeconds << " us (" << ms << " ms)" << std::endl;
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
#include "Components.h"
|
||||
Scene::Scene()
|
||||
{
|
||||
m_registry = entt::basic_registry();
|
||||
}
|
||||
|
||||
Scene::~Scene()
|
||||
|
Reference in New Issue
Block a user