History

move ProgramObject to libraries

ZappoMan committed 11 years ago

Commit df7e1151 parent 49cacd815 files · +19 −17Browse files

Showing the changes to libraries/render-utils/src/ProgramObject.cpp (1 of 15 files). Show all

Unified · Split

libraries/render-utils/src/ProgramObject.cpp+56−0
@@ -0,0 +1,56 @@
1+//
2+// ProgramObject.cpp
3+// interface/src/renderer
4+//
5+// Created by Andrzej Kapolka on 5/7/13.
6+// Copyright 2013 High Fidelity, Inc.
7+//
8+// Distributed under the Apache License, Version 2.0.
9+// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10+//
11+
12+#include <glm/gtc/type_ptr.hpp>
13+
14+#include "ProgramObject.h"
15+
16+ProgramObject::ProgramObject(QObject* parent) : QGLShaderProgram(parent) {
17+}
18+
19+void ProgramObject::setUniform(int location, const glm::vec2& value) {
20+ setUniformValue(location, value.x, value.y);
21+}
22+
23+void ProgramObject::setUniform(const char* name, const glm::vec2& value) {
24+ setUniformValue(name, value.x, value.y);
25+}
26+
27+void ProgramObject::setUniform(int location, const glm::vec3& value) {
28+ setUniformValue(location, value.x, value.y, value.z);
29+}
30+
31+void ProgramObject::setUniform(const char* name, const glm::vec3& value) {
32+ setUniformValue(name, value.x, value.y, value.z);
33+}
34+
35+void ProgramObject::setUniform(int location, const glm::vec4& value) {
36+ setUniformValue(location, value.x, value.y, value.z, value.w);
37+}
38+
39+void ProgramObject::setUniform(const char* name, const glm::vec4& value) {
40+ setUniformValue(name, value.x, value.y, value.z, value.w);
41+}
42+
43+void ProgramObject::setUniformArray(const char* name, const glm::vec3* values, int count) {
44+ GLfloat* floatVal = new GLfloat[count*3];
45+ int index = 0;
46+ for (int i = 0; i < count; i++) {
47+ assert(index < count*3);
48+ const float* valPtr = glm::value_ptr(values[i]);
49+ floatVal[index++] = valPtr[0];
50+ floatVal[index++] = valPtr[1];
51+ floatVal[index++] = valPtr[2];
52+ }
53+
54+ setUniformValueArray(name, floatVal, count, 3);
55+ delete[] floatVal;
56+}