diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2015-09-10 15:16:19 +0300 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-09-15 12:50:20 +0200 |
commit | 1f1b3fbbc213d5725d4bdbe5271de8fca617a05b (patch) | |
tree | 05e045808f1c0ce11a77106ad302e206c6d99dab /src | |
parent | 7943b1b71cd76612a0e9f33a256b2f8a1afecf37 (diff) | |
download | qtlocation-mapboxgl-1f1b3fbbc213d5725d4bdbe5271de8fca617a05b.tar.gz |
[shader] Shaders vertex and fragments are now GLchar*
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/shader/shader.cpp | 16 | ||||
-rw-r--r-- | src/mbgl/shader/shader.hpp | 11 |
2 files changed, 14 insertions, 13 deletions
diff --git a/src/mbgl/shader/shader.cpp b/src/mbgl/shader/shader.cpp index c69518c8c8..e8deefc8ff 100644 --- a/src/mbgl/shader/shader.cpp +++ b/src/mbgl/shader/shader.cpp @@ -14,20 +14,21 @@ using namespace mbgl; Shader::Shader(const char *name_, const GLchar *vertSource, const GLchar *fragSource) - : name(name_), - program(0) { + : name(name_) + , program(0) +{ util::stopwatch stopwatch("shader compilation", Event::Shader); program = MBGL_CHECK_ERROR(glCreateProgram()); - if (!compileShader(&vertShader, GL_VERTEX_SHADER, vertSource)) { + if (!compileShader(&vertShader, GL_VERTEX_SHADER, &vertSource)) { Log::Error(Event::Shader, "Vertex shader %s failed to compile: %s", name, vertSource); MBGL_CHECK_ERROR(glDeleteProgram(program)); program = 0; throw util::ShaderException(std::string { "Vertex shader " } + name + " failed to compile"); } - if (!compileShader(&fragShader, GL_FRAGMENT_SHADER, fragSource)) { + if (!compileShader(&fragShader, GL_FRAGMENT_SHADER, &fragSource)) { Log::Error(Event::Shader, "Fragment shader %s failed to compile: %s", name, fragSource); MBGL_CHECK_ERROR(glDeleteShader(vertShader)); vertShader = 0; @@ -69,13 +70,12 @@ Shader::Shader(const char *name_, const GLchar *vertSource, const GLchar *fragSo } -bool Shader::compileShader(GLuint *shader, GLenum type, const GLchar *source) { +bool Shader::compileShader(GLuint *shader, GLenum type, const GLchar *source[]) { GLint status; *shader = MBGL_CHECK_ERROR(glCreateShader(type)); - const GLchar *strings[] = { source }; - const GLsizei lengths[] = { static_cast<GLsizei>(std::strlen(source)) }; - MBGL_CHECK_ERROR(glShaderSource(*shader, 1, strings, lengths)); + const GLsizei lengths = static_cast<GLsizei>(std::strlen(*source)); + MBGL_CHECK_ERROR(glShaderSource(*shader, 1, source, &lengths)); MBGL_CHECK_ERROR(glCompileShader(*shader)); diff --git a/src/mbgl/shader/shader.hpp b/src/mbgl/shader/shader.hpp index 3290224796..dab7cd8522 100644 --- a/src/mbgl/shader/shader.hpp +++ b/src/mbgl/shader/shader.hpp @@ -12,9 +12,10 @@ namespace mbgl { class Shader : private util::noncopyable { public: - Shader(const char *name, const char *vertex, const char *fragment); + Shader(const GLchar *name, const GLchar *vertex, const GLchar *fragment); + ~Shader(); - const char *name; + const GLchar *name; uint32_t program; inline uint32_t getID() const { @@ -27,10 +28,10 @@ protected: GLint a_pos = -1; private: - bool compileShader(uint32_t *shader, uint32_t type, const char *source); + bool compileShader(GLuint *shader, GLenum type, const GLchar *source[]); - uint32_t vertShader = 0; - uint32_t fragShader = 0; + GLuint vertShader = 0; + GLuint fragShader = 0; }; } |