void MyApplication::useSimpleArray() { const SceneManagerPtr& scene = BaseApplication::getSceneManager(); scene->clear(); for (s32 col = -2; col < 3; ++col) { for (s32 row = -2; row < 3; ++row) { for (s32 width = 0; width < 1; ++width) { CShape* model = scene->addCube(0, Vector3D((f32)row, (f32)col, -5)); if (model) { model->setName("cube_" + std::to_string(col) + "_" + std::to_string(row)); model->setScale(Vector3D(0.5f)); model->setRenderTechnique("shaders/default.xml"); model->getMaterial()->setTexture(0, "textures/box.jpg"); } } } } CNode* fpsCamera = scene->addFPSCamera(0, Vector3D(0, 0, 0), Vector3D(0.7f, 0, 0.7f)); fpsCamera->setName("fpsCamera"); CNode* camera = scene->addCamera(0, Vector3D(0, 0, 0), Vector3D(0.0f, 0, -5.0f)); camera->setName("camera"); scene->init(); }
void MyApplication::useInstancedObject() { const SceneManagerPtr& scene = BaseApplication::getSceneManager(); scene->clear(); CShape* model = scene->addCube(0, Vector3D(0, 0, -5)); if (model) { model->setName("cube"); model->setScale(Vector3D(0.5f)); model->setRenderTechnique("shaders/default_instancing.xml"); model->getMaterial()->setTexture(0, "textures/box.jpg"); const RenderPassPtr& pass = model->getRenderTechique()->getRenderPass(0); u32 index = 0; for (s32 col = -2; col < 3; ++col) { for (s32 row = -2; row < 3; ++row) { for (s32 width = 0; width < 1; ++width) { pass->getUserShaderData()->setUniform("offsets[" + std::to_string(index) + "]", Vector3D((f32)col, (f32)row, f32(- 5 - width))); ++index; } } } } CNode* fpsCamera = scene->addFPSCamera(0, Vector3D(0, 0, 0), Vector3D(0.7f, 0, 0.7f)); fpsCamera->setName("fpsCamera"); CNode* camera = scene->addCamera(0, Vector3D(0, 0, 0), Vector3D(0.0f, 0, -5.0f)); camera->setName("camera"); scene->init(); }
void MyApplication::useInstancedAttrObject() { const SceneManagerPtr& scene = BaseApplication::getSceneManager(); scene->clear(); CShape* model = scene->addCube(0, Vector3D(0, 0, 0)); if (model) { model->setName("cube"); model->setScale(Vector3D(0.5f)); model->setRenderTechnique("shaders/default_instancing_attr.xml"); model->getMaterial()->setTexture(0, "textures/box.jpg"); const RenderPassPtr& pass = model->getRenderTechique()->getRenderPass(0); std::vector<Vector3D> offset; for (s32 col = -2; col < 3; ++col) { for (s32 row = -2; row < 3; ++row) { for (s32 width = 0; width < 1; ++width) { offset.push_back(Vector3D((f32)col, (f32)row, f32(-5 - width))); } } } pass->getUserShaderData()->setAttribute("offsets", 1, offset); } CNode* fpsCamera = scene->addFPSCamera(0, Vector3D(0, 0, 0), Vector3D(0.7f, 0, 0.7f)); fpsCamera->setName("fpsCamera"); CNode* camera = scene->addCamera(0, Vector3D(0, 0, 0), Vector3D(0.0f, 0, -5.0f)); camera->setName("camera"); scene->init(); }