mirror of
https://github.com/overte-org/overte.git
synced 2025-07-23 03:16:21 +02:00
56 lines
1.7 KiB
C++
56 lines
1.7 KiB
C++
//
|
|
// ProgramObject.cpp
|
|
// interface/src/renderer
|
|
//
|
|
// Created by Andrzej Kapolka on 5/7/13.
|
|
// Copyright 2013 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
#include <glm/gtc/type_ptr.hpp>
|
|
|
|
#include "ProgramObject.h"
|
|
|
|
ProgramObject::ProgramObject(QObject* parent) : QGLShaderProgram(parent) {
|
|
}
|
|
|
|
void ProgramObject::setUniform(int location, const glm::vec2& value) {
|
|
setUniformValue(location, value.x, value.y);
|
|
}
|
|
|
|
void ProgramObject::setUniform(const char* name, const glm::vec2& value) {
|
|
setUniformValue(name, value.x, value.y);
|
|
}
|
|
|
|
void ProgramObject::setUniform(int location, const glm::vec3& value) {
|
|
setUniformValue(location, value.x, value.y, value.z);
|
|
}
|
|
|
|
void ProgramObject::setUniform(const char* name, const glm::vec3& value) {
|
|
setUniformValue(name, value.x, value.y, value.z);
|
|
}
|
|
|
|
void ProgramObject::setUniform(int location, const glm::vec4& value) {
|
|
setUniformValue(location, value.x, value.y, value.z, value.w);
|
|
}
|
|
|
|
void ProgramObject::setUniform(const char* name, const glm::vec4& value) {
|
|
setUniformValue(name, value.x, value.y, value.z, value.w);
|
|
}
|
|
|
|
void ProgramObject::setUniformArray(const char* name, const glm::vec3* values, int count) {
|
|
GLfloat* floatVal = new GLfloat[count*3];
|
|
int index = 0;
|
|
for (int i = 0; i < count; i++) {
|
|
assert(index < count*3);
|
|
const float* valPtr = glm::value_ptr(values[i]);
|
|
floatVal[index++] = valPtr[0];
|
|
floatVal[index++] = valPtr[1];
|
|
floatVal[index++] = valPtr[2];
|
|
}
|
|
|
|
setUniformValueArray(name, floatVal, count, 3);
|
|
delete[] floatVal;
|
|
}
|