Пример #1
0
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);
}
Пример #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();
}
Пример #3
0
void op3d::Engine::mainLoop()
{
    while (!glfwWindowShouldClose(window))
    {
        glfwPollEvents();
        updateUniformBuffer();
        drawFrame();
    }

    vkDeviceWaitIdle(device);
    glfwDestroyWindow(window);
    glfwTerminate();
}