mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-26 23:41:07 +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;
|
||||
rb.renderbuffer = name;
|
||||
rb.desc = desc;
|
||||
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());
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
SRB2_ASSERT(graphics_context_active_ == false);
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ struct GlCoreRenderPass : public rhi::RenderPass
|
|||
struct GlCoreRenderbuffer : public rhi::Renderbuffer
|
||||
{
|
||||
uint32_t renderbuffer;
|
||||
rhi::RenderbufferDesc desc;
|
||||
};
|
||||
|
||||
struct GlCoreUniformSet : public rhi::UniformSet
|
||||
|
|
@ -181,6 +182,9 @@ public:
|
|||
virtual Handle<Renderbuffer> create_renderbuffer(const RenderbufferDesc& desc) 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 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.
|
||||
constexpr const std::size_t kPixelRowUnpackAlignment = 4;
|
||||
|
||||
|
|
@ -579,6 +586,9 @@ struct Rhi
|
|||
virtual Handle<Renderbuffer> create_renderbuffer(const RenderbufferDesc& desc) = 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 void end_transfer(Handle<TransferContext> handle) = 0;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue