From df8b3618c2e0db137daf7857f45c1ca45bf2ff36 Mon Sep 17 00:00:00 2001 From: jules Date: Sun, 18 Dec 2011 11:45:00 +0000 Subject: [PATCH] OpenGL vertex attribute helper. --- .../opengl/juce_OpenGLShaderProgram.cpp | 6 ++++++ .../opengl/juce_OpenGLShaderProgram.h | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp b/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp index 3b64d7e696..84c7f62e93 100644 --- a/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp +++ b/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.cpp @@ -83,6 +83,12 @@ OpenGLShaderProgram::Uniform::Uniform (const OpenGLShaderProgram& program, const jassert (uniformID >= 0); } +OpenGLShaderProgram::Attribute::Attribute (const OpenGLShaderProgram& program, const char* name) + : attributeID (glGetAttribLocation (program.programID, name)) +{ + jassert (attributeID >= 0); +} + void OpenGLShaderProgram::Uniform::set (GLfloat n1) const noexcept { glUniform1f (uniformID, n1); } void OpenGLShaderProgram::Uniform::set (GLint n1) const noexcept { glUniform1i (uniformID, n1); } void OpenGLShaderProgram::Uniform::set (GLfloat n1, GLfloat n2) const noexcept { glUniform2f (uniformID, n1, n2); } diff --git a/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h b/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h index 306a8f5b70..ad8591d201 100644 --- a/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h +++ b/modules/juce_opengl/opengl/juce_OpenGLShaderProgram.h @@ -101,6 +101,24 @@ public: GLint uniformID; }; + /** Represents an openGL vertex attribute value. + After a program has been linked, you can create Attribute objects to let you + set the attributes that your vertex shaders use. + */ + struct Attribute + { + /** Initialises an attribute. + The program must have been successfully linked when this + constructor is called. + */ + Attribute (const OpenGLShaderProgram& program, const char* attributeName); + + /** The attribute's ID number. + If the uniform couldn't be found, this value will be < 0. + */ + GLint attributeID; + }; + /** The ID number of the compiled program. */ GLuint programID;