summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2015-09-10 15:16:19 +0300
committerKonstantin Käfer <mail@kkaefer.com>2015-09-15 12:50:20 +0200
commit1f1b3fbbc213d5725d4bdbe5271de8fca617a05b (patch)
tree05e045808f1c0ce11a77106ad302e206c6d99dab /src
parent7943b1b71cd76612a0e9f33a256b2f8a1afecf37 (diff)
downloadqtlocation-mapboxgl-1f1b3fbbc213d5725d4bdbe5271de8fca617a05b.tar.gz
[shader] Shaders vertex and fragments are now GLchar*
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/shader/shader.cpp16
-rw-r--r--src/mbgl/shader/shader.hpp11
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;
};
}