2026-02-11 19:40:26 +08:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
2026-02-26 20:06:51 +08:00
|
|
|
|
#include <core/size.h>
|
2026-02-26 00:55:13 +08:00
|
|
|
|
#include <core/types.h>
|
|
|
|
|
|
|
2026-02-11 19:40:26 +08:00
|
|
|
|
namespace extra2d {
|
|
|
|
|
|
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
// 像素格式枚举
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
enum class PixelFormat {
|
2026-02-26 00:55:13 +08:00
|
|
|
|
R8, // 单通道灰度
|
|
|
|
|
|
RG8, // 双通道
|
|
|
|
|
|
RGB8, // RGB 24位
|
|
|
|
|
|
RGBA8, // RGBA 32位(默认)
|
|
|
|
|
|
RGB16F, // RGB 半精度浮点
|
|
|
|
|
|
RGBA16F, // RGBA 半精度浮点
|
|
|
|
|
|
RGB32F, // RGB 全精度浮点
|
|
|
|
|
|
RGBA32F, // RGBA 全精度浮点
|
|
|
|
|
|
Depth16, // 16位深度
|
|
|
|
|
|
Depth24, // 24位深度
|
|
|
|
|
|
Depth32F, // 32位浮点深度
|
|
|
|
|
|
Depth24Stencil8, // 24位深度 + 8位模板
|
2026-02-11 19:40:26 +08:00
|
|
|
|
|
2026-02-26 00:55:13 +08:00
|
|
|
|
// 压缩纹理格式
|
|
|
|
|
|
ETC2_RGB8, // ETC2 RGB 压缩
|
|
|
|
|
|
ETC2_RGBA8, // ETC2 RGBA 压缩
|
|
|
|
|
|
ASTC_4x4, // ASTC 4x4 压缩
|
|
|
|
|
|
ASTC_6x6, // ASTC 6x6 压缩
|
|
|
|
|
|
ASTC_8x8 // ASTC 8x8 压缩
|
2026-02-11 19:40:26 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
// 纹理接口
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
class Texture {
|
|
|
|
|
|
public:
|
2026-02-26 00:55:13 +08:00
|
|
|
|
virtual ~Texture() = default;
|
|
|
|
|
|
|
|
|
|
|
|
// 获取尺寸
|
2026-02-26 00:59:16 +08:00
|
|
|
|
virtual int width() const = 0;
|
|
|
|
|
|
virtual int height() const = 0;
|
2026-02-26 00:55:13 +08:00
|
|
|
|
virtual Size size() const = 0;
|
|
|
|
|
|
|
|
|
|
|
|
// 获取通道数
|
|
|
|
|
|
virtual int getChannels() const = 0;
|
|
|
|
|
|
|
|
|
|
|
|
// 获取像素格式
|
|
|
|
|
|
virtual PixelFormat getFormat() const = 0;
|
|
|
|
|
|
|
|
|
|
|
|
// 获取原始句柄(用于底层渲染)
|
|
|
|
|
|
virtual void *getNativeHandle() const = 0;
|
|
|
|
|
|
|
|
|
|
|
|
// 是否有效
|
|
|
|
|
|
virtual bool isValid() const = 0;
|
|
|
|
|
|
|
|
|
|
|
|
// 设置过滤模式
|
|
|
|
|
|
virtual void setFilter(bool linear) = 0;
|
2026-02-11 19:40:26 +08:00
|
|
|
|
|
2026-02-26 00:55:13 +08:00
|
|
|
|
// 设置环绕模式
|
|
|
|
|
|
virtual void setWrap(bool repeat) = 0;
|
2026-02-11 19:40:26 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace extra2d
|