mouse picking

This commit is contained in:
Erris
2026-02-22 16:35:27 +01:00
parent cb064bdb46
commit 577b52be28
19 changed files with 412 additions and 124 deletions

View File

@@ -1,9 +1,11 @@
#ifndef OPENGL_FRAMEBUFFER_HPP
#define OPENGL_FRAMEBUFFER_HPP
#include "core.hpp"
#include <renderer/framebuffer.hpp>
#include <cstdint>
#include <vector>
namespace OpenEngine {
class OpenGLFramebuffer : public FrameBuffer
@@ -18,15 +20,24 @@ namespace OpenEngine {
virtual void Unbind() override;
virtual void Resize(uint32_t width, uint32_t height) override;
virtual int ReadPixel(uint32_t index, int x, int y) override;
virtual uint32_t GetColorAttachmentRendererID() const override { return color_attachment; }
virtual uint32_t GetColorAttachmentRendererID(uint32_t index = 0) const override {
OE_CORE_ASSERT(index < color_attachment_ids.size(), "Index is greater than color attachment count.");
return color_attachment_ids[index];
}
virtual const FramebufferSpecification& GetSpecification() const override { return specs; }
private:
uint32_t id = 0;
uint32_t color_attachment = 0, depth_attachment = 0;
FramebufferSpecification specs;
std::vector<FramebufferTextureSpecification> color_attachment_specs;
FramebufferTextureSpecification depth_attachment_specs = FramebufferTextureFormat::None;
std::vector<uint32_t> color_attachment_ids;
uint32_t depth_attachment_id;
};
}

View File

@@ -13,6 +13,7 @@ namespace OpenEngine {
virtual void SetViewport(uint32_t x, uint32_t y, uint32_t width, uint32_t height) override;
virtual void SetClearColor(const glm::vec4& color) override;
virtual void ClearBufferI(int buffer, int value) override;
virtual void Clear() override;
virtual void DrawIndexed(const Ref<VertexArray>& vertex_array, uint32_t index_count = 0) override;