aboutsummaryrefslogtreecommitdiffstatsci
path: root/tests/test1.cpp
blob: 2b8d17dd5c133ebf341c0940b14fd41577cff2e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "vke.hpp"
#include "camera.hpp"
#include "phyInfos.hpp"
#include "pbrrenderer2.hpp"
#include "VulkanSwapChain.hpp"

class Test : public vke::engine_t
{
public:
    pbrRenderer*   sceneRenderer = nullptr;
    vkglTF::Model* mod;

    Test() : engine_t(1024, 768, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)
    {
        title = "Vulkan Chess glTf 2.0 PBR";
        camera->type = vke::Camera::CameraType::firstperson;
        camera->movementSpeed = 8.0f;
        camera->rotationSpeed = 0.25f;
        camera->setPerspective(45.0f, (float)width / (float)height, 0.1f, 256.0f);
        camera->setRotation({ .0f, 0.0f, 2.5f });
        camera->setPosition({ .0f, .0f, 0.f });


        settings.validation = true;

        phyInfos->enabledFeatures.samplerAnisotropy
                = phyInfos->features.samplerAnisotropy;
        phyInfos->selectQueue (phyInfos->pQueue);
    }

    ~Test()
    {
        delete(sceneRenderer);
    }

    virtual void prepare() {
        sceneRenderer = new pbrRenderer();

        sceneRenderer->create(device, renderTarget, sharedUBOs);

        sceneRenderer->models.resize(1);
        mod = &sceneRenderer->models[0];

        //mod->loadFromFile ("data/models/chess.gltf", device, true);
        mod->loadFromFile ("data/models/DamagedHelmet/glTF-Embedded/DamagedHelmet.gltf", device, true);

        //mod->addInstance("frame", glm::translate(glm::mat4(1.0),       glm::vec3( 0,0,0)));
        mod->addOneInstanceOfEach();

        sceneRenderer->prepareModels();
        sceneRenderer->buildCommandBuffer();
    }

    void render () {
        if (!prepared)
            return;

        prepareFrame();

        sceneRenderer->submit(device->queue, &swapChain->presentCompleteSemaphore, 1);
        VK_CHECK_RESULT(swapChain->queuePresent(device->queue, sceneRenderer->drawComplete));

        //update();
    }
};

Test *test;


int main(const int argc, const char *argv[])
{

    for (size_t i = 0; i < argc; i++) { Test::args.push_back(argv[i]); };
    test = new Test();
    test->start();
    delete(test);
    return 0;
}