Extra2D/examples/scene_graph_demo/instanced_test.h

59 lines
1.3 KiB
C
Raw Normal View History

#pragma once
#include <scene/node.h>
#include <renderer/instance_buffer.h>
#include <renderer/material.h>
#include <renderer/mesh.h>
#include <renderer/texture.h>
#include <assets/handle.h>
#include <vector>
namespace extra2d {
/**
* @brief
*
* 使
*/
class InstancedTestNode : public Node {
public:
InstancedTestNode();
~InstancedTestNode() override;
/**
* @brief
* @param instanceCount
* @return
*/
bool initialize(uint32_t instanceCount = 1000);
/**
* @brief
* @param dt
*/
void update(float dt);
/**
* @brief
*/
void render() override;
private:
InstanceBuffer instanceBuffer_; // 实例缓冲区
std::vector<InstanceData> instanceData_; // CPU端实例数据
uint32_t instanceCount_ = 0; // 实例数量
float time_ = 0.0f; // 时间累积
// 资源句柄
Handle<Material> material_;
Handle<Mesh> mesh_;
Handle<Texture> texture_;
/**
* @brief
*/
void updateInstances();
};
} // namespace extra2d