diff options
-rw-r--r-- | test/api/custom_layer.cpp | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/test/api/custom_layer.cpp b/test/api/custom_layer.cpp index 73258534d9..2a831b50d9 100644 --- a/test/api/custom_layer.cpp +++ b/test/api/custom_layer.cpp @@ -7,6 +7,7 @@ #include <mbgl/layer/custom_layer.hpp> #include <mbgl/util/io.hpp> #include <mbgl/util/mat4.hpp> +#include <mbgl/gl/gl_object_store.hpp> using namespace mbgl; @@ -17,38 +18,35 @@ class TestLayer { public: ~TestLayer() { if (program) { - MBGL_CHECK_ERROR(glDeleteBuffers(1, &buffer)); - MBGL_CHECK_ERROR(glDetachShader(program, vertexShader)); - MBGL_CHECK_ERROR(glDetachShader(program, fragmentShader)); - MBGL_CHECK_ERROR(glDeleteShader(vertexShader)); - MBGL_CHECK_ERROR(glDeleteShader(fragmentShader)); - MBGL_CHECK_ERROR(glDeleteProgram(program)); + MBGL_CHECK_ERROR(glDetachShader(program.getID(), vertexShader.getID())); + MBGL_CHECK_ERROR(glDetachShader(program.getID(), fragmentShader.getID())); } } void initialize() { - program = MBGL_CHECK_ERROR(glCreateProgram()); - vertexShader = MBGL_CHECK_ERROR(glCreateShader(GL_VERTEX_SHADER)); - fragmentShader = MBGL_CHECK_ERROR(glCreateShader(GL_FRAGMENT_SHADER)); + program.create(); + vertexShader.create(); + fragmentShader.create(); - MBGL_CHECK_ERROR(glShaderSource(vertexShader, 1, &vertexShaderSource, nullptr)); - MBGL_CHECK_ERROR(glCompileShader(vertexShader)); - MBGL_CHECK_ERROR(glAttachShader(program, vertexShader)); - MBGL_CHECK_ERROR(glShaderSource(fragmentShader, 1, &fragmentShaderSource, nullptr)); - MBGL_CHECK_ERROR(glCompileShader(fragmentShader)); - MBGL_CHECK_ERROR(glAttachShader(program, fragmentShader)); - MBGL_CHECK_ERROR(glLinkProgram(program)); - a_pos = glGetAttribLocation(program, "a_pos"); + MBGL_CHECK_ERROR(glShaderSource(vertexShader.getID(), 1, &vertexShaderSource, nullptr)); + MBGL_CHECK_ERROR(glCompileShader(vertexShader.getID())); + MBGL_CHECK_ERROR(glAttachShader(program.getID(), vertexShader.getID())); + MBGL_CHECK_ERROR(glShaderSource(fragmentShader.getID(), 1, &fragmentShaderSource, nullptr)); + MBGL_CHECK_ERROR(glCompileShader(fragmentShader.getID())); + MBGL_CHECK_ERROR(glAttachShader(program.getID(), fragmentShader.getID())); + MBGL_CHECK_ERROR(glLinkProgram(program.getID())); + a_pos = glGetAttribLocation(program.getID(), "a_pos"); - GLfloat background[] = { -1,-1, 1,-1, -1,1, 1,1 }; - MBGL_CHECK_ERROR(glGenBuffers(1, &buffer)); - MBGL_CHECK_ERROR(glBindBuffer(GL_ARRAY_BUFFER, buffer)); + buffer.create(); + MBGL_CHECK_ERROR(glBindBuffer(GL_ARRAY_BUFFER, buffer.getID())); + + GLfloat background[] = { -1,-1, 1,-1,-1, 1, 1, 1 }; MBGL_CHECK_ERROR(glBufferData(GL_ARRAY_BUFFER, 8 * sizeof(GLfloat), background, GL_STATIC_DRAW)); } void render() { - MBGL_CHECK_ERROR(glUseProgram(program)); - MBGL_CHECK_ERROR(glBindBuffer(GL_ARRAY_BUFFER, buffer)); + MBGL_CHECK_ERROR(glUseProgram(program.getID())); + MBGL_CHECK_ERROR(glBindBuffer(GL_ARRAY_BUFFER, buffer.getID())); MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_FLOAT, GL_FALSE, 0, NULL)); MBGL_CHECK_ERROR(glDisable(GL_STENCIL_TEST)); @@ -56,10 +54,10 @@ public: MBGL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); } - GLuint program = 0; - GLuint vertexShader = 0; - GLuint fragmentShader = 0; - GLuint buffer = 0; + gl::ProgramHolder program; + gl::ShaderHolder vertexShader = { GL_VERTEX_SHADER }; + gl::ShaderHolder fragmentShader = { GL_FRAGMENT_SHADER }; + gl::BufferHolder buffer; GLuint a_pos = 0; }; |