Skip to content

Latest commit

 

History

History
134 lines (94 loc) · 2.97 KB

File metadata and controls

134 lines (94 loc) · 2.97 KB

Graphics

这部分代码你一般情况下不需要进行修改, 它们主要用于辅助你进行视觉效果的绘制

资产管理器

绘制图形需要涉及模型和纹理等资源, 这些绘图资源应避免重复加载以致占用不必要的额外内存空间。 因此我们引入资产管理器辅助管理绘图资源,并方便地进行重复利用。 你如果对绘图相关的知识不熟悉,可以不看这一章节的内容,利用下一章节中更直接的操作手段利用纹理进行绘制。

static AssetsManager *AssetsManager::GetInstance();
  • 这个静态函数用于获得资产管理器对象的指针
uint32_t RegisterModel(const std::vector<ObjectVertex> &vertices,
                         const std::vector<uint32_t> &indices);
  • 这个函数用于注册一个新的模型
  • vertices 表示模型的顶点信息
  • indices 表示模型的索引信息
  • 返回值为注册的模型编号
  • 同样的内容请只注册一次,以避免浪费资源
uint32_t RegisterTexture(const Texture &particle_texture);
  • 这个函数用于注册一个新的纹理
  • particle_texture 表示注册的纹理图案
  • 返回值为注册的纹理编号,这个编号可以用于绘制操作前纹理的绑定
  • 同样的内容请只注册一次,以避免浪费资源

全局函数定义

void SetColor(const glm::vec4 &color = glm::vec4{1.0f});
  • 设置全局绘制颜色
glm::vec4 GetColor();
  • 获取当前设置的全局绘制颜色
void SetPosition(glm::vec2 position);
  • 设置全局绘制位置
void SetRotation(float rotation);
  • 设置全局绘制朝向
glm::vec2 GetPosition();
  • 获取全局绘制位置
float GetRotation();
  • 获取全局绘制朝向
void SetScale(glm::vec2 scale);
  • 设置全局模型拉伸倍率信息
glm::vec2 GetScale();
  • 获取全局模型拉伸倍率信息
void SetTransformation(glm::vec2 position,
                       float rotation = 0.0f,
                       glm::vec2 scale = glm::vec2{1.0f});
  • 统一设置变换信息
  • 相当于一起调用 SetPosition, SetRotation, SetScale 函数
uint32_t RegisterTexture(const std::string &file_path);
  • 根据图片文件注册一个新的纹理
  • file_path 表示图片文件的路径
  • 同样的内容请只注册一次,以避免浪费资源
uint32_t SetTexture(const std::string &file_path);
  • 根据图片文件的路径设置绑定的纹理
void SetTexture(uint32_t texture_id = 0);
  • 根据纹理注册编号设置绑定的纹理
uint32_t GetTexture();
  • 获取当前绑定的纹理编号
void DrawModel(uint32_t model_id = 0);
  • 根据当前绑定的全局设置,绘制对应编号的注册模型
void DrawTexture(const std::string &file_path);
  • 根据当前绑定的全局设置,绘制 file_path 路径对应的图片到本地空间为 $[-1, 1]^2$ 的矩形区域内