mirror of
https://github.com/overte-org/overte.git
synced 2025-06-25 03:49:37 +02:00
39 lines
1,021 B
C++
39 lines
1,021 B
C++
//
|
|
// ShaderObject.cpp
|
|
// interface
|
|
//
|
|
// Created by Andrzej Kapolka on 5/7/13.
|
|
// Copyright (c) 2013 High Fidelity, Inc. All rights reserved.
|
|
|
|
#include <QFile>
|
|
|
|
#include "ShaderObject.h"
|
|
|
|
ShaderObject::ShaderObject(int type)
|
|
: _handle(glCreateShaderObjectARB(type)) {
|
|
}
|
|
|
|
ShaderObject::~ShaderObject() {
|
|
glDeleteObjectARB(_handle);
|
|
}
|
|
|
|
bool ShaderObject::compileSourceCode(const char* data) {
|
|
glShaderSourceARB(_handle, 1, &data, 0);
|
|
glCompileShaderARB(_handle);
|
|
int status;
|
|
glGetObjectParameterivARB(_handle, GL_OBJECT_COMPILE_STATUS_ARB, &status);
|
|
return status;
|
|
}
|
|
|
|
bool ShaderObject::compileSourceFile(const char* filename) {
|
|
QFile file(filename);
|
|
return file.open(QIODevice::ReadOnly) && compileSourceCode(file.readAll().constData());
|
|
}
|
|
|
|
QByteArray ShaderObject::getLog() const {
|
|
int length;
|
|
glGetObjectParameterivARB(_handle, GL_OBJECT_INFO_LOG_LENGTH_ARB, &length);
|
|
QByteArray log(length, 0);
|
|
glGetInfoLogARB(_handle, length, 0, log.data());
|
|
return log;
|
|
}
|