]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/renderer.h
Use pipeline keys for objects and effects
[libs/gl.git] / source / render / renderer.h
index 79bd5cd913931a7eeca01f0e79e358b6965fd329..75c8cc8b58aaada99b371eb1bfc553d47d3d4ad7 100644 (file)
@@ -144,6 +144,14 @@ private:
 
 public:
        void set_pipeline_key(std::uintptr_t);
+       void set_pipeline_key(const void *p) { set_pipeline_key(reinterpret_cast<uintptr_t>(p)); }
+
+       template<typename T>
+       void set_pipeline_key(std::uintptr_t k, T d)
+       { set_pipeline_key(k^(static_cast<uintptr_t>(d)<<((sizeof(std::uintptr_t)-sizeof(T))*std::numeric_limits<char>::digits))); }
+
+       template<typename T>
+       void set_pipeline_key(const void *p, T d) { set_pipeline_key(reinterpret_cast<uintptr_t>(p), d); }
 
        /** Sets the camera to render from.  The model matrix is reset to identity. */
        void set_camera(const Camera &);