Showing the changes to interface/src/renderer/ProgramObject.cpp (1 of 7 files). Show all
Unified · Split
| @@ -6,114 +6,15 @@ · 5 unmodified lines | ||
| 6 | 6 | // Copyright (c) 2013 High Fidelity, Inc. All rights reserved. |
| 7 | 7 | |
| 8 | 8 | #include "ProgramObject.h" |
| 9 | −#include "ShaderObject.h" | |
| 10 | 9 | |
| 11 | −ProgramObject::ProgramObject() : _handle(glCreateProgramObjectARB()) { | |
| 12 | −} | |
| 13 | − | |
| 14 | −ProgramObject::~ProgramObject() { | |
| 15 | − glDeleteObjectARB(_handle); | |
| 16 | −} | |
| 17 | − | |
| 18 | −void ProgramObject::attach(ShaderObject* shader) { | |
| 19 | − glAttachObjectARB(_handle, shader->getHandle()); | |
| 20 | −} | |
| 21 | − | |
| 22 | −bool ProgramObject::attachFromSourceCode(int type, const char* source) { | |
| 23 | − ShaderObject* shader = new ShaderObject(type); | |
| 24 | − if (shader->compileSourceCode(source)) { | |
| 25 | − attach(shader); | |
| 26 | − return true; | |
| 27 | − | |
| 28 | − } else { | |
| 29 | − delete shader; | |
| 30 | − return false; | |
| 31 | − } | |
| 32 | −} | |
| 33 | − | |
| 34 | −bool ProgramObject::attachFromSourceFile(int type, const char* filename) { | |
| 35 | − ShaderObject* shader = new ShaderObject(type); | |
| 36 | − if (shader->compileSourceFile(filename)) { | |
| 37 | − attach(shader); | |
| 38 | − return true; | |
| 39 | − | |
| 40 | − } else { | |
| 41 | − delete shader; | |
| 42 | − return false; | |
| 43 | − } | |
| 44 | −} | |
| 45 | − | |
| 46 | −bool ProgramObject::link() { | |
| 47 | − glLinkProgramARB(_handle); | |
| 48 | − int status; | |
| 49 | − glGetObjectParameterivARB(_handle, GL_OBJECT_LINK_STATUS_ARB, &status); | |
| 50 | − return status; | |
| 51 | −} | |
| 52 | − | |
| 53 | −QByteArray ProgramObject::getLog() const { | |
| 54 | − int length; | |
| 55 | − glGetObjectParameterivARB(_handle, GL_OBJECT_INFO_LOG_LENGTH_ARB, &length); | |
| 56 | − QByteArray log(length, 0); | |
| 57 | − glGetInfoLogARB(_handle, length, 0, log.data()); | |
| 58 | − return log; | |
| 59 | −} | |
| 60 | − | |
| 61 | −void ProgramObject::bind() const { | |
| 62 | − glUseProgramObjectARB(_handle); | |
| 63 | −} | |
| 64 | − | |
| 65 | −void ProgramObject::release() const { | |
| 66 | − glUseProgramObjectARB(0); | |
| 67 | −} | |
| 68 | − | |
| 69 | −int ProgramObject::getUniformLocation(const char* name) const { | |
| 70 | − return glGetUniformLocationARB(_handle, name); | |
| 71 | −} | |
| 72 | − | |
| 73 | −void ProgramObject::setUniform(int location, int value) { | |
| 74 | − glUniform1iARB(location, value); | |
| 75 | −} | |
| 76 | − | |
| 77 | −void ProgramObject::setUniform(const char* name, int value) { | |
| 78 | − setUniform(getUniformLocation(name), value); | |
| 79 | −} | |
| 80 | − | |
| 81 | −void ProgramObject::setUniform(int location, float value) { | |
| 82 | − glUniform1fARB(location, value); | |
| 83 | −} | |
| 84 | − | |
| 85 | −void ProgramObject::setUniform(const char* name, float value) { | |
| 86 | − setUniform(getUniformLocation(name), value); | |
| 87 | −} | |
| 88 | − | |
| 89 | −void ProgramObject::setUniform(int location, float x, float y) { | |
| 90 | − glUniform2fARB(location, x, y); | |
| 91 | −} | |
| 92 | − | |
| 93 | −void ProgramObject::setUniform(const char* name, float x, float y) { | |
| 94 | − setUniform(getUniformLocation(name), x, y); | |
| 10 | +ProgramObject::ProgramObject(QObject* parent) : QGLShaderProgram(parent) { | |
| 95 | 11 | } |
| 96 | 12 | |
| 97 | 13 | void ProgramObject::setUniform(int location, const glm::vec3& value) { |
| 98 | − glUniform3fARB(location, value.x, value.y, value.z); | |
| 14 | + setUniformValue(location, value.x, value.y, value.z); | |
| 99 | 15 | } |
| 100 | 16 | |
| 101 | 17 | void ProgramObject::setUniform(const char* name, const glm::vec3& value) { |
| 102 | − setUniform(getUniformLocation(name), value); | |
| 18 | + setUniformValue(name, value.x, value.y, value.z); | |
| 103 | 19 | } |
| 104 | 20 | |
| 105 | −void ProgramObject::setUniform(int location, float x, float y, float z) { | |
| 106 | − glUniform3fARB(location, x, y, z); | |
| 107 | −} | |
| 108 | − | |
| 109 | −void ProgramObject::setUniform(const char* name, float x, float y, float z) { | |
| 110 | − setUniform(getUniformLocation(name), x, y, z); | |
| 111 | −} | |
| 112 | − | |
| 113 | −void ProgramObject::setUniform(int location, float x, float y, float z, float w) { | |
| 114 | − glUniform4fARB(location, x, y, z, w); | |
| 115 | −} | |
| 116 | − | |
| 117 | −void ProgramObject::setUniform(const char* name, float x, float y, float z, float w) { | |
| 118 | − setUniform(getUniformLocation(name), x, y, z, w); | |
| 119 | −} | |