Position, scale and texturepath properties

This commit is contained in:
Sebastian Piwell
2016-03-10 15:04:44 -05:00
parent afc3883d4d
commit a53e289a20
6 changed files with 29 additions and 25 deletions

View File

@@ -34,16 +34,28 @@ namespace openspace {
:ScreenSpaceRenderable()
{
setName("ScreenSpaceImage");
OsEng.gui()._property.registerProperty(&_enabled);
OsEng.gui()._property.registerProperty(&_flatScreen);
OsEng.gui()._property.registerProperty(&_position);
OsEng.gui()._property.registerProperty(&_scale);
OsEng.gui()._property.registerProperty(&_texturePath);
_texturePath.onChange([this](){ loadTexture(); });
}
ScreenSpaceImage::~ScreenSpaceImage(){}
void ScreenSpaceImage::render(){
glm::mat4 transform = glm::translate(glm::mat4(1.f), _position.value());
transform = glm::scale(transform, glm::vec3(_scale.value()));
GLint m_viewport[4];
glGetIntegerv(GL_VIEWPORT, m_viewport);
float height = (float(m_viewport[2])/m_viewport[3])*
(float(_texture->height())/float(_texture->width()));
glm::mat4 transform = glm::translate(glm::mat4(1.f), _position.value());
transform = glm::scale(transform, glm::vec3(_scale.value(),_scale.value()*height,1));
// transform.translate(position.value());
_shader->activate();
_shader->setUniform("ModelTransform",transform);
@@ -60,15 +72,10 @@ void ScreenSpaceImage::render(){
}
bool ScreenSpaceImage::initialize(){
OsEng.gui()._property.registerProperty(&_enabled);
OsEng.gui()._property.registerProperty(&_flatScreen);
glGenVertexArrays(1, &_quad); // generate array
glGenBuffers(1, &_vertexPositionBuffer); // generate buffer
createPlane();
_texturePath = "/home/spiwell/OpenSpace-Development/data/test.png";
if(_shader == nullptr) {
RenderEngine& renderEngine = OsEng.renderEngine();
_shader = renderEngine.buildRenderProgram("ScreenSpaceProgram",
@@ -100,8 +107,8 @@ bool ScreenSpaceImage::isReady() const{
}
void ScreenSpaceImage::loadTexture() {
if (_texturePath != "") {
std::unique_ptr<ghoul::opengl::Texture> texture = ghoul::io::TextureReader::ref().loadTexture(_texturePath);
if (_texturePath.value() != "") {
std::unique_ptr<ghoul::opengl::Texture> texture = ghoul::io::TextureReader::ref().loadTexture(absPath(_texturePath.value()));
if (texture) {
// LDEBUG("Loaded texture from '" << absPath(_texturePath) << "'");
// std::cout<< std::endl << std::endl << "Loaded texture from '" << absPath(_texturePath) << "'" <<std::endl << std::endl;

View File

@@ -41,8 +41,6 @@ public:
bool isReady() const override;
private:
void loadTexture();
std::string _texturePath;
std::unique_ptr<ghoul::opengl::Texture> _texture; // The image to render
};