29 static bool BindShader(
const std::shared_ptr<Shader>& shader);
34 static void SetViewport(
int x,
int y,
int width,
int height);
50 static void BindTexture(
const std::shared_ptr<Texture>& texture, uint8_t slot = 0);
54 struct RendererStorage {
56 glm::vec3 CameraPosition;
60 static RendererAPI* s_API;
61 static RenderCommandQueue s_commands;
64 static RendererStorage s_data;
65 static RenderState s_currentState;
66 static uint32_t s_currentShaderID;
67 static uintptr_t s_textures[];
static GraphicAPI GetAPI()
static void PushRenderState(const RenderState &newState)
static void FlushBuffers()
static void SetClearColor(const glm::vec4 &color)
static void SetViewport(int x, int y, int width, int height)
static void BindTexture(const std::shared_ptr< Texture > &texture, uint8_t slot=0)
static void SubmitMesh(const std::shared_ptr< VertexArray > &vao, const std::shared_ptr< Material > &material, const glm::mat4 &transform, RenderBucket::Type bucketType=RenderBucket::Opaque)
static void BeginFrame(const ScenePtr scene, const Camera &cam)
static void InvalidateStateCache()
static bool BindShader(const std::shared_ptr< Shader > &shader)
static void Submit(RenderBucket::Type type, const RenderCommand &command)
static void DrawArray(const VertexArray *vao, DrawPrimitiveType primitive=DrawPrimitiveType::Triangles)
static void Dispatch(const RenderCommand &command)
Immediatly process a RenderCommand. Do not use directly unless you know what you are donig.
static void ApplySystemUniforms(const std::shared_ptr< Shader > &shader)
static RendererAPI::GraphicAPI GetAPI()
std::shared_ptr< Scene > ScenePtr