| 50 | } |
| 51 | |
| 52 | void initialize() |
| 53 | { |
| 54 | g_shaderProgram = new globjects::Program(); |
| 55 | g_shaderProgram->ref(); |
| 56 | |
| 57 | const auto dataPath = common::retrieveDataPath("globjects", "dataPath"); |
| 58 | g_shaderProgram->attach( |
| 59 | globjects::Shader::fromFile(GL_VERTEX_SHADER, dataPath + "transformfeedback/simple.vert") |
| 60 | , globjects::Shader::fromFile(GL_FRAGMENT_SHADER, dataPath + "transformfeedback/simple.frag")); |
| 61 | |
| 62 | g_transformFeedbackProgram = new globjects::Program(); |
| 63 | g_transformFeedbackProgram->ref(); |
| 64 | g_transformFeedbackProgram->attach( |
| 65 | globjects::Shader::fromFile(GL_VERTEX_SHADER, dataPath + "transformfeedback/transformfeedback.vert")); |
| 66 | |
| 67 | g_transformFeedbackProgram->setUniform("deltaT", 0.0f); |
| 68 | |
| 69 | g_shaderProgram->setUniform("modelView", glm::mat4()); |
| 70 | g_shaderProgram->setUniform("projection", glm::ortho(-0.4f, 1.4f, -0.4f, 1.4f, 0.f, 1.f)); |
| 71 | |
| 72 | |
| 73 | // Create and setup geometry |
| 74 | auto vertexArray = std::vector<glm::vec4>({ |
| 75 | { 0, 0, 0, 1 } |
| 76 | , { 1, 0, 0, 1 } |
| 77 | , { 0, 1, 0, 1 } |
| 78 | , { 1, 0, 0, 1 } |
| 79 | , { 0, 1, 0, 1 } |
| 80 | , { 1, 1, 0, 1 } }); |
| 81 | |
| 82 | auto colorArray = std::vector<glm::vec4>({ |
| 83 | { 1, 0, 0, 1 } |
| 84 | , { 1, 1, 0, 1 } |
| 85 | , { 0, 0, 1, 1 } |
| 86 | , { 1, 1, 0, 1 } |
| 87 | , { 0, 0, 1, 1 } |
| 88 | , { 0, 1, 0, 1 } }); |
| 89 | |
| 90 | g_vertexBuffer1 = new globjects::Buffer(); |
| 91 | g_vertexBuffer1->ref(); |
| 92 | g_vertexBuffer1->setData(vertexArray, GL_STATIC_DRAW); |
| 93 | g_vertexBuffer2 = new globjects::Buffer(); |
| 94 | g_vertexBuffer2->ref(); |
| 95 | g_vertexBuffer2->setData(vertexArray, GL_STATIC_DRAW); |
| 96 | g_colorBuffer = new globjects::Buffer(); |
| 97 | g_colorBuffer->ref(); |
| 98 | g_colorBuffer->setData(colorArray, GL_STATIC_DRAW); |
| 99 | |
| 100 | g_vao = new globjects::VertexArray(); |
| 101 | g_vao->ref(); |
| 102 | |
| 103 | g_vao->binding(0)->setAttribute(0); |
| 104 | g_vao->binding(0)->setFormat(4, GL_FLOAT); |
| 105 | |
| 106 | g_vao->binding(1)->setAttribute(1); |
| 107 | g_vao->binding(1)->setBuffer(g_colorBuffer, 0, sizeof(glm::vec4)); |
| 108 | g_vao->binding(1)->setFormat(4, GL_FLOAT); |
| 109 |
no test coverage detected