50 lines
1.2 KiB
C++
50 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "renderer_api/recording_renderer.h"
|
|
#include "renderer_gl/opengl_capabilities.h"
|
|
|
|
#include <cstdint>
|
|
|
|
namespace pp::renderer::gl {
|
|
|
|
enum class OpenGlPlannedCommandKind : std::uint8_t {
|
|
unknown,
|
|
begin_render_pass,
|
|
set_viewport,
|
|
set_scissor,
|
|
set_blend_state,
|
|
set_depth_state,
|
|
bind_texture,
|
|
bind_sampler,
|
|
bind_mesh,
|
|
draw,
|
|
blit_render_target,
|
|
end_render_pass,
|
|
trace,
|
|
passthrough,
|
|
};
|
|
|
|
struct OpenGlPlannedCommand {
|
|
OpenGlPlannedCommandKind kind = OpenGlPlannedCommandKind::unknown;
|
|
std::uint32_t clear_mask = 0;
|
|
OpenGlClearValues clear_values;
|
|
OpenGlViewportRect viewport;
|
|
OpenGlScissorRect scissor;
|
|
OpenGlBlendState blend;
|
|
OpenGlDepthState depth;
|
|
OpenGlSamplerState sampler;
|
|
OpenGlRendererTextureFormat texture_format;
|
|
OpenGlEnumMapping blit_filter;
|
|
std::uint32_t primitive_mode = 0;
|
|
std::uint32_t draw_vertex_count = 0;
|
|
std::uint32_t draw_index_count = 0;
|
|
bool requires_render_pass = false;
|
|
bool supported = false;
|
|
};
|
|
|
|
[[nodiscard]] const char* planned_command_kind_name(OpenGlPlannedCommandKind kind) noexcept;
|
|
[[nodiscard]] OpenGlPlannedCommand plan_recorded_render_command(
|
|
pp::renderer::RecordedRenderCommand command) noexcept;
|
|
|
|
}
|