]> git.sesse.net Git - movit/blobdiff - effect.h
Use UBOs instead of glUniform. Work in progress; no clear wins seen yet.
[movit] / effect.h
index fe76a7569976b80b690a8e3c2ed87f0078ab8a2d..d812db0ad2f900be6a9c7289fc5466d507758f48 100644 (file)
--- a/effect.h
+++ b/effect.h
@@ -59,7 +59,9 @@ struct Uniform {
        const T *value;  // Owner by the effect.
        size_t num_values;  // Number of elements; for arrays only. _Not_ the vector length.
        std::string prefix;  // Filled in only after phases have been constructed.
-       GLint location;  // Filled in only after phases have been constructed. -1 if no location.
+       GLuint location;  // Filled in only after phases have been constructed. GL_INVALID_INDEX if no location, or if using UBOs.
+       GLint ubo_offset;  // Same. -1 if no location or if not using UBOs.
+       GLint ubo_num_elem; // Same. 0 if no location or if not using UBOs.
 };
 
 class Effect {
@@ -316,11 +318,8 @@ protected:
        //
        // Neither of these take ownership of the pointer.
 
-       // int is special since GLSL pre-1.30 doesn't have integer uniforms.
-       // Thus, ints that you register will _not_ be converted to GLSL uniforms.
+       // These correspond directly to int/float/vec2/vec3/vec4 in GLSL.
        void register_int(const std::string &key, int *value);
-
-       // These correspond directly to float/vec2/vec3/vec4 in GLSL.
        void register_float(const std::string &key, float *value);
        void register_vec2(const std::string &key, float *values);
        void register_vec3(const std::string &key, float *values);