mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-26 12:01:47 +00:00
rhi: Add get_texture_details, get_renderbuffer_size
This commit is contained in:
parent
c193930b4e
commit
171a285caa
3 changed files with 42 additions and 0 deletions
|
|
@ -844,6 +844,7 @@ rhi::Handle<rhi::Renderbuffer> GlCoreRhi::create_renderbuffer(const rhi::Renderb
|
||||||
|
|
||||||
GlCoreRenderbuffer rb;
|
GlCoreRenderbuffer rb;
|
||||||
rb.renderbuffer = name;
|
rb.renderbuffer = name;
|
||||||
|
rb.desc = desc;
|
||||||
return renderbuffer_slab_.insert(std::move(rb));
|
return renderbuffer_slab_.insert(std::move(rb));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1735,6 +1736,33 @@ void GlCoreRhi::read_pixels(Handle<GraphicsContext> ctx, const Rect& rect, Pixel
|
||||||
gl_->ReadPixels(rect.x, rect.y, rect.w, rect.h, layout, type, out.data());
|
gl_->ReadPixels(rect.x, rect.y, rect.w, rect.h, layout, type, out.data());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TextureDetails GlCoreRhi::get_texture_details(Handle<Texture> texture)
|
||||||
|
{
|
||||||
|
SRB2_ASSERT(texture_slab_.is_valid(texture));
|
||||||
|
auto& t = texture_slab_[texture];
|
||||||
|
|
||||||
|
TextureDetails ret {};
|
||||||
|
ret.format = t.desc.format;
|
||||||
|
ret.width = t.desc.width;
|
||||||
|
ret.height = t.desc.height;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
Rect GlCoreRhi::get_renderbuffer_size(Handle<Renderbuffer> renderbuffer)
|
||||||
|
{
|
||||||
|
SRB2_ASSERT(renderbuffer_slab_.is_valid(renderbuffer));
|
||||||
|
auto& rb = renderbuffer_slab_[renderbuffer];
|
||||||
|
|
||||||
|
Rect ret {};
|
||||||
|
ret.x = 0;
|
||||||
|
ret.y = 0;
|
||||||
|
ret.w = rb.desc.width;
|
||||||
|
ret.h = rb.desc.height;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void GlCoreRhi::finish()
|
void GlCoreRhi::finish()
|
||||||
{
|
{
|
||||||
SRB2_ASSERT(graphics_context_active_ == false);
|
SRB2_ASSERT(graphics_context_active_ == false);
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,7 @@ struct GlCoreRenderPass : public rhi::RenderPass
|
||||||
struct GlCoreRenderbuffer : public rhi::Renderbuffer
|
struct GlCoreRenderbuffer : public rhi::Renderbuffer
|
||||||
{
|
{
|
||||||
uint32_t renderbuffer;
|
uint32_t renderbuffer;
|
||||||
|
rhi::RenderbufferDesc desc;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct GlCoreUniformSet : public rhi::UniformSet
|
struct GlCoreUniformSet : public rhi::UniformSet
|
||||||
|
|
@ -181,6 +182,9 @@ public:
|
||||||
virtual Handle<Renderbuffer> create_renderbuffer(const RenderbufferDesc& desc) override;
|
virtual Handle<Renderbuffer> create_renderbuffer(const RenderbufferDesc& desc) override;
|
||||||
virtual void destroy_renderbuffer(Handle<Renderbuffer> handle) override;
|
virtual void destroy_renderbuffer(Handle<Renderbuffer> handle) override;
|
||||||
|
|
||||||
|
virtual TextureDetails get_texture_details(Handle<Texture> texture) override;
|
||||||
|
virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) override;
|
||||||
|
|
||||||
virtual Handle<TransferContext> begin_transfer() override;
|
virtual Handle<TransferContext> begin_transfer() override;
|
||||||
virtual void end_transfer(Handle<TransferContext> handle) override;
|
virtual void end_transfer(Handle<TransferContext> handle) override;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -559,6 +559,13 @@ struct GraphicsContext
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TextureDetails
|
||||||
|
{
|
||||||
|
uint32_t width;
|
||||||
|
uint32_t height;
|
||||||
|
TextureFormat format;
|
||||||
|
};
|
||||||
|
|
||||||
/// @brief The unpack alignment of a row span when uploading pixels to the device.
|
/// @brief The unpack alignment of a row span when uploading pixels to the device.
|
||||||
constexpr const std::size_t kPixelRowUnpackAlignment = 4;
|
constexpr const std::size_t kPixelRowUnpackAlignment = 4;
|
||||||
|
|
||||||
|
|
@ -579,6 +586,9 @@ struct Rhi
|
||||||
virtual Handle<Renderbuffer> create_renderbuffer(const RenderbufferDesc& desc) = 0;
|
virtual Handle<Renderbuffer> create_renderbuffer(const RenderbufferDesc& desc) = 0;
|
||||||
virtual void destroy_renderbuffer(Handle<Renderbuffer> handle) = 0;
|
virtual void destroy_renderbuffer(Handle<Renderbuffer> handle) = 0;
|
||||||
|
|
||||||
|
virtual TextureDetails get_texture_details(Handle<Texture> texture) = 0;
|
||||||
|
virtual Rect get_renderbuffer_size(Handle<Renderbuffer> renderbuffer) = 0;
|
||||||
|
|
||||||
virtual Handle<TransferContext> begin_transfer() = 0;
|
virtual Handle<TransferContext> begin_transfer() = 0;
|
||||||
virtual void end_transfer(Handle<TransferContext> handle) = 0;
|
virtual void end_transfer(Handle<TransferContext> handle) = 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue