void ParabolaPointer::RenderState::ParabolaRenderItem::render(RenderArgs* args) { if (!_visible) { return; } gpu::Batch& batch = *(args->_batch); Transform transform; transform.setTranslation(_origin); batch.setModelTransform(transform); batch.setPipeline(getParabolaPipeline()); const int MAX_SECTIONS = 100; if (glm::length2(_parabolaData.acceleration) < EPSILON) { _parabolaData.numSections = 1; } else { _parabolaData.numSections = glm::clamp((int)(_parabolaData.parabolicDistance + 1) * 10, 1, MAX_SECTIONS); } updateUniformBuffer(); batch.setUniformBuffer(0, _uniformBuffer); // We draw 2 * n + 2 vertices for a triangle strip batch.draw(gpu::TRIANGLE_STRIP, 2 * _parabolaData.numSections + 2, 0); }
void CTester::load() { gEnv->pRenderer->addRenderPass("tester", VK_ATTACHMENT_LOAD_OP_LOAD); gEnv->pRenderer->addGraphicsPipeline(gEnv->pRenderer->getShader("color"), gEnv->pRenderer->getRenderPass("tester"), "tester", false); loadGraphics(); updateUniformBuffer(); }
void op3d::Engine::mainLoop() { while (!glfwWindowShouldClose(window)) { glfwPollEvents(); updateUniformBuffer(); drawFrame(); } vkDeviceWaitIdle(device); glfwDestroyWindow(window); glfwTerminate(); }