refactor(asset_service): 移除未使用的algorithm头文件并清理代码格式
refactor(object_pool): 重构对象池实现并修复内存边界检查 chore: 删除废弃的renderer.h头文件
This commit is contained in:
parent
6195d57814
commit
24960516ae
|
|
@ -1,7 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <extra2d/core/types.h>
|
||||
#include <array>
|
||||
#include <extra2d/core/types.h>
|
||||
#include <queue>
|
||||
|
||||
namespace extra2d {
|
||||
|
|
@ -11,8 +11,7 @@ namespace extra2d {
|
|||
* @tparam T 对象类型
|
||||
* @tparam Size 池大小
|
||||
*/
|
||||
template <typename T, size_t Size>
|
||||
class ObjectPool {
|
||||
template <typename T, size_t Size> class ObjectPool {
|
||||
public:
|
||||
ObjectPool() {
|
||||
for (size_t i = 0; i < Size; ++i) {
|
||||
|
|
@ -38,7 +37,7 @@ public:
|
|||
* @param obj 对象指针
|
||||
*/
|
||||
void release(T *obj) {
|
||||
if (obj >= pool_.data() && obj < pool_.data() + Size) {
|
||||
if (obj >= pool_ && obj < pool_ + Size) {
|
||||
obj->~T();
|
||||
new (obj) T();
|
||||
available_.push(obj);
|
||||
|
|
|
|||
|
|
@ -1,130 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <extra2d/core/types.h>
|
||||
#include <extra2d/core/math_types.h>
|
||||
#include <extra2d/core/color.h>
|
||||
#include <extra2d/render/render_types.h>
|
||||
#include <extra2d/render/texture.h>
|
||||
#include <extra2d/render/shader.h>
|
||||
#include <extra2d/render/batch.h>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace extra2d {
|
||||
|
||||
class Camera2D;
|
||||
class TextureAsset;
|
||||
class FontAsset;
|
||||
class SceneNode;
|
||||
|
||||
using RendererRef = Ref<class IRenderer2D>;
|
||||
|
||||
class IRenderer2D {
|
||||
public:
|
||||
virtual ~IRenderer2D() = default;
|
||||
|
||||
virtual bool init(void* nativeWindow) = 0;
|
||||
virtual void shutdown() = 0;
|
||||
virtual void resize(i32 width, i32 height) = 0;
|
||||
|
||||
virtual void beginFrame() = 0;
|
||||
virtual void endFrame() = 0;
|
||||
virtual void present() = 0;
|
||||
|
||||
virtual void setViewport(const Viewport& viewport) = 0;
|
||||
virtual void setScissor(const Scissor& scissor) = 0;
|
||||
virtual void clear(const ClearCommand& cmd) = 0;
|
||||
|
||||
virtual void setCamera(const Camera2D* camera) = 0;
|
||||
virtual void resetCamera() = 0;
|
||||
|
||||
virtual void setBlendMode(BlendMode mode) = 0;
|
||||
virtual void setRenderState(const RenderState& state) = 0;
|
||||
|
||||
virtual TextureRef createTexture(const TextureDesc& desc) = 0;
|
||||
virtual TextureRef createTextureFromAsset(Ref<TextureAsset> asset) = 0;
|
||||
virtual void destroyTexture(TextureRef texture) = 0;
|
||||
|
||||
virtual Ref<ITextureArray> createTextureArray(i32 width, i32 height,
|
||||
u32 maxLayers,
|
||||
TextureFormat format) = 0;
|
||||
|
||||
virtual ShaderRef createShader(const std::string& vertexSrc,
|
||||
const std::string& fragmentSrc) = 0;
|
||||
virtual void destroyShader(ShaderRef shader) = 0;
|
||||
|
||||
virtual void drawSprite(TextureRef texture,
|
||||
const Vec2& position,
|
||||
const Vec2& size,
|
||||
const Vec2& scale,
|
||||
float rotation,
|
||||
const Vec2& anchor,
|
||||
const TextureRegion& region,
|
||||
const Color& tint,
|
||||
float opacity) = 0;
|
||||
|
||||
virtual void drawSpriteBatch(const std::vector<SpriteVertex>& vertices,
|
||||
const std::vector<u32>& indices,
|
||||
TextureRef texture) = 0;
|
||||
|
||||
virtual void drawText(Ref<FontAsset> font,
|
||||
const std::string& text,
|
||||
const Vec2& position,
|
||||
float fontSize,
|
||||
const Color& color,
|
||||
float opacity) = 0;
|
||||
|
||||
virtual void drawRect(const Rect& rect, const Color& color, bool filled) = 0;
|
||||
virtual void drawRect(const Vec2& position, const Vec2& size,
|
||||
const Color& color, bool filled) = 0;
|
||||
|
||||
virtual void drawCircle(const Vec2& center, float radius,
|
||||
const Color& color, bool filled,
|
||||
u32 segments = 32) = 0;
|
||||
|
||||
virtual void drawLine(const Vec2& start, const Vec2& end,
|
||||
const Color& color, float thickness = 1.0f) = 0;
|
||||
|
||||
virtual void drawLines(const std::vector<Vec2>& points,
|
||||
const Color& color,
|
||||
float thickness = 1.0f) = 0;
|
||||
|
||||
virtual void drawPolygon(const std::vector<Vec2>& points,
|
||||
const Color& color,
|
||||
bool filled) = 0;
|
||||
|
||||
virtual void drawShapeBatch(const std::vector<ShapeVertex>& vertices,
|
||||
const std::vector<u32>& indices,
|
||||
PrimitiveType primitive) = 0;
|
||||
|
||||
virtual void flushBatch() = 0;
|
||||
|
||||
virtual i32 width() const = 0;
|
||||
virtual i32 height() const = 0;
|
||||
|
||||
virtual bool isVulkan() const = 0;
|
||||
virtual const char* backendName() const = 0;
|
||||
|
||||
static RendererRef create(bool preferVulkan = true);
|
||||
};
|
||||
|
||||
struct RenderStats {
|
||||
u32 drawCalls = 0;
|
||||
u32 quadCount = 0;
|
||||
u32 vertexCount = 0;
|
||||
u32 indexCount = 0;
|
||||
u32 textureSwitches = 0;
|
||||
u32 shaderSwitches = 0;
|
||||
|
||||
void reset() {
|
||||
drawCalls = 0;
|
||||
quadCount = 0;
|
||||
vertexCount = 0;
|
||||
indexCount = 0;
|
||||
textureSwitches = 0;
|
||||
shaderSwitches = 0;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
#include "extra2d/services/asset_service.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <filesystem>
|
||||
|
||||
namespace extra2d {
|
||||
|
|
|
|||
Loading…
Reference in New Issue