solved merge conflict

This commit is contained in:
Michael Nilsson
2016-03-11 15:09:07 -05:00
7 changed files with 51 additions and 19 deletions
+19 -9
View File
@@ -30,11 +30,11 @@
#include <modules/onscreengui/include/gui.h>
namespace openspace {
ScreenSpaceImage::ScreenSpaceImage()
:ScreenSpaceRenderable()
ScreenSpaceImage::ScreenSpaceImage(std::string texturePath)
:ScreenSpaceRenderable(texturePath)
{
setName("ScreenSpaceImage");
setName("ScreenSpaceImage" + std::to_string(id()));
OsEng.gui()._property.registerProperty(&_enabled);
OsEng.gui()._property.registerProperty(&_flatScreen);
OsEng.gui()._property.registerProperty(&_position);
@@ -44,16 +44,20 @@ namespace openspace {
_texturePath.onChange([this](){ loadTexture(); });
}
ScreenSpaceImage::~ScreenSpaceImage(){}
ScreenSpaceImage::~ScreenSpaceImage(){}
void ScreenSpaceImage::render(Camera* camera){
GLint m_viewport[4];
glGetIntegerv(GL_VIEWPORT, m_viewport);
GLfloat m_viewport[4];
glGetFloatv(GL_VIEWPORT, m_viewport);
float height = (float(_texture->height())/float(_texture->width()));
float scalingRatioX = m_viewport[2] / _originalViewportSize[0];
float scalingRatioY = m_viewport[3] / _originalViewportSize[1];
glm::mat4 transform = glm::translate(glm::mat4(1.f), _position.value());
transform = glm::scale(transform, glm::vec3(_scale.value(),_scale.value()*height,1));
transform = glm::scale(transform, glm::vec3(_scale.value()*scalingRatioY, _scale.value()*height*scalingRatioX, 1));
_shader->activate();
@@ -85,7 +89,9 @@ bool ScreenSpaceImage::initialize(){
if (!_shader)
return false;
}
GLfloat m_viewport[4];
glGetFloatv(GL_VIEWPORT, m_viewport);
_originalViewportSize = glm::vec2(m_viewport[2], m_viewport[3]);
loadTexture();
return isReady();
@@ -111,7 +117,6 @@ void ScreenSpaceImage::loadTexture() {
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;
texture->uploadTexture();
// Textures of planets looks much smoother with AnisotropicMipMap rather than linear
@@ -125,4 +130,9 @@ void ScreenSpaceImage::loadTexture() {
}
}
}
int ScreenSpaceImage::id(){
static int id = 0;
return id++;
}
}
+5 -2
View File
@@ -31,7 +31,7 @@ namespace openspace {
class ScreenSpaceImage : public ScreenSpaceRenderable {
public:
ScreenSpaceImage();
ScreenSpaceImage(std::string texturePath);
~ScreenSpaceImage();
void render(Camera* camera) override;
@@ -41,8 +41,11 @@ public:
bool isReady() const override;
private:
void loadTexture();
static int id();
std::unique_ptr<ghoul::opengl::Texture> _texture; // The image to render
glm::vec2 _originalViewportSize;
};
// int ScreenSpaceImage::id = 0;
} //namespace openspace
#endif //__SCREENSPACEIMAGE_H__
+1 -1
View File
@@ -39,5 +39,5 @@ void main(){
vs_st = in_st;
vs_position = in_position;
gl_Position = ViewProjectionMatrix * ModelTransform * vs_position;
gl_Position = ViewProjectionMatrix * ModelTransform * vs_position;
}
+21
View File
@@ -34,6 +34,9 @@
#include <ghoul/filesystem/cachemanager.h>
#include <openspace/properties/property.h>
#include <openspace/rendering/renderengine.h>
#include <openspace/rendering/screenspacerenderable.h>
#include <modules/base/rendering/screenspaceimage.h>
#include <ghoul/opengl/ghoul_gl.h>
#include <ghoul/opengl/programobject.h>
@@ -129,6 +132,16 @@ namespace {
}
namespace openspace {
void addScreenSpaceRenderable(std::string texturePath){
std::string filepath ="${OPENSPACE_DATA}/"+texturePath;
if( ! FileSys.fileExists(filepath)) {
LWARNING("Could not find image '" << filepath << "'");
return;
}
OsEng.renderEngine().registerScreenSpaceRenderable(std::make_shared<ScreenSpaceImage>(filepath));
}
namespace gui {
GUI::GUI()
@@ -392,6 +405,14 @@ void GUI::renderMainWindow() {
ImGui::Checkbox("Help", &_help._isEnabled);
static const int bufferSize = 256;
static char buffer[bufferSize];
ImGui::InputText("", buffer, bufferSize);
if(ImGui::SmallButton("Add Image")){
addScreenSpaceRenderable(std::string(buffer));
}
ImGui::End();
}