25 #include <QSet> |
25 #include <QSet> |
26 #include <QOpenGLVertexArrayObject> |
26 #include <QOpenGLVertexArrayObject> |
27 #include <QOpenGLBuffer> |
27 #include <QOpenGLBuffer> |
28 #include <QOpenGLShaderProgram> |
28 #include <QOpenGLShaderProgram> |
29 #include <QOpenGLExtraFunctions> |
29 #include <QOpenGLExtraFunctions> |
|
30 #include "model.h" |
30 |
31 |
31 class Model; |
32 class Model; |
32 class DocumentManager; |
33 class DocumentManager; |
33 |
34 |
34 namespace gl |
35 namespace gl |
62 DocumentManager* context, |
63 DocumentManager* context, |
63 const RenderPreferences& preferences); |
64 const RenderPreferences& preferences); |
64 void initializeModelShaders(ModelShaders* modelShaders); |
65 void initializeModelShaders(ModelShaders* modelShaders); |
65 void bindModelShaderVertexArray(gl::ModelShaders* shaders, gl::ArrayClass arrayClass); |
66 void bindModelShaderVertexArray(gl::ModelShaders* shaders, gl::ArrayClass arrayClass); |
66 void releaseModelShaderVertexArray(gl::ModelShaders* shaders, gl::ArrayClass arrayClass); |
67 void releaseModelShaderVertexArray(gl::ModelShaders* shaders, gl::ArrayClass arrayClass); |
67 void setModelShaderSelectedObjects(gl::ModelShaders* shaders, const QSet<ldraw::id_t>& ids); |
68 void setModelShaderSelectedObjects(gl::ModelShaders* shaders, const QSet<ModelId>& ids); |
68 std::size_t vertexCount(const ModelShaders *shaders, gl::ArrayClass arrayClass); |
69 std::size_t vertexCount(const ModelShaders *shaders, gl::ArrayClass arrayClass); |
69 ldraw::id_t idFromColor(const std::array<GLubyte, 3>& data); |
70 ModelId idFromColor(const std::array<GLubyte, 3>& data); |
70 |
71 |
71 template<typename T> |
72 template<typename T> |
72 void setShaderUniform(gl::ModelShaders* shaders, const char* uniformName, T&& value) |
73 void setShaderUniform(gl::ModelShaders* shaders, const char* uniformName, T&& value) |
73 { |
74 { |
74 for (gl::ModelShaders::ShaderObject& shader : shaders->shaderObjects) |
75 for (gl::ModelShaders::ShaderObject& shader : shaders->shaderObjects) |