| 68 | |
| 69 | |
| 70 | void initialize() |
| 71 | { |
| 72 | g_cornerBuffer = new globjects::Buffer(); |
| 73 | g_cornerBuffer->ref(); |
| 74 | g_vertexProgram = new globjects::Program(); |
| 75 | g_vertexProgram->ref(); |
| 76 | g_fragmentProgram = new globjects::Program(); |
| 77 | g_fragmentProgram->ref(); |
| 78 | g_programPipeline = new globjects::ProgramPipeline(); |
| 79 | g_programPipeline->ref(); |
| 80 | g_vao = new globjects::VertexArray(); |
| 81 | g_vao->ref(); |
| 82 | |
| 83 | g_vertexProgram->attach(globjects::Shader::fromString(GL_VERTEX_SHADER, vertexShaderCode)); |
| 84 | g_fragmentProgram->attach(globjects::Shader::fromString(GL_FRAGMENT_SHADER, fragmentShaderCode)); |
| 85 | |
| 86 | g_programPipeline->useStages(g_vertexProgram, gl::GL_VERTEX_SHADER_BIT); |
| 87 | g_programPipeline->useStages(g_fragmentProgram, gl::GL_FRAGMENT_SHADER_BIT); |
| 88 | |
| 89 | g_cornerBuffer->setData(std::array<glm::vec2, 4>{ { |
| 90 | glm::vec2(0, 0), glm::vec2(1, 0), glm::vec2(0, 1), glm::vec2(1, 1) } }, GL_STATIC_DRAW); |
| 91 | |
| 92 | g_vao->binding(0)->setAttribute(0); |
| 93 | g_vao->binding(0)->setBuffer(g_cornerBuffer, 0, sizeof(glm::vec2)); |
| 94 | g_vao->binding(0)->setFormat(2, GL_FLOAT); |
| 95 | g_vao->enable(0); |
| 96 | } |
| 97 | |
| 98 | void deinitialize() |
| 99 | { |