feat(渲染器): 添加基础2D渲染系统
实现核心渲染功能,包括着色器管理、批处理系统、相机控制和纹理加载 - 添加着色器管理器用于加载和管理GLSL着色器程序 - 实现批处理系统优化绘制调用 - 添加相机控制支持视图和投影矩阵 - 实现纹理加载和管理功能 - 添加基础2D渲染API包括绘制四边形和精灵 - 集成到应用系统中,支持自动初始化和清理 - 添加示例着色器用于彩色四边形和纹理精灵 - 更新构建系统包含新的渲染相关文件
This commit is contained in:
67
Frostbite2D/include/frostbite2D/graphics/renderer.h
Normal file
67
Frostbite2D/include/frostbite2D/graphics/renderer.h
Normal file
@@ -0,0 +1,67 @@
|
||||
#pragma once
|
||||
|
||||
#include <frostbite2D/graphics/types.h>
|
||||
#include <frostbite2D/graphics/texture.h>
|
||||
#include <frostbite2D/graphics/shader.h>
|
||||
#include <frostbite2D/graphics/shader_manager.h>
|
||||
#include <frostbite2D/graphics/batch.h>
|
||||
#include <frostbite2D/graphics/camera.h>
|
||||
#include <string>
|
||||
|
||||
namespace frostbite2D {
|
||||
|
||||
class Renderer {
|
||||
public:
|
||||
static Renderer& get();
|
||||
|
||||
bool init();
|
||||
void shutdown();
|
||||
|
||||
void beginFrame();
|
||||
void endFrame();
|
||||
void flush();
|
||||
|
||||
void setViewport(int x, int y, int width, int height);
|
||||
void setClearColor(float r, float g, float b, float a = 1.0f);
|
||||
void setClearColor(const Color& color);
|
||||
void clear(uint32_t flags);
|
||||
|
||||
void setCamera(Camera* camera);
|
||||
Camera* getCamera() { return camera_; }
|
||||
|
||||
void drawQuad(const Vec2& pos, const Size& size, float cr = 1.0f, float cg = 1.0f,
|
||||
float cb = 1.0f, float ca = 1.0f);
|
||||
void drawQuad(const Vec2& pos, const Size& size, Ptr<Texture> texture);
|
||||
void drawQuad(const Rect& rect, const Color& color);
|
||||
|
||||
void drawSprite(const Vec2& pos, const Size& size, Ptr<Texture> texture);
|
||||
void drawSprite(const Vec2& pos, const Rect& srcRect, const Vec2& texSize,
|
||||
Ptr<Texture> texture, const Color& color = Color(1, 1, 1, 1));
|
||||
|
||||
ShaderManager& getShaderManager() { return shaderManager_; }
|
||||
Batch& getBatch() { return batch_; }
|
||||
|
||||
private:
|
||||
Renderer();
|
||||
~Renderer();
|
||||
|
||||
void setupBlendMode(BlendMode mode);
|
||||
void updateUniforms();
|
||||
|
||||
ShaderManager shaderManager_;
|
||||
Batch batch_;
|
||||
Camera* camera_ = nullptr;
|
||||
|
||||
uint32_t clearColor_[4] = {0, 0, 0, 255};
|
||||
int viewportX_ = 0;
|
||||
int viewportY_ = 0;
|
||||
int viewportWidth_ = 1280;
|
||||
int viewportHeight_ = 720;
|
||||
|
||||
bool initialized_ = false;
|
||||
|
||||
Renderer(const Renderer&) = delete;
|
||||
Renderer& operator=(const Renderer&) = delete;
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user