Reintroduce powerscaled coordinates to modelgeometry to fix scaling issue

Correctly set magnification property in RenderableModelProjection
This commit is contained in:
Alexander Bock
2016-05-16 12:57:53 +02:00
parent ffdaeeedcc
commit ecc6c8d63f
2 changed files with 18 additions and 7 deletions

View File

@@ -28,6 +28,8 @@
#include "ghoul/io/model/modelreadermultiformat.h"
#include "ghoul/opengl/vertexbufferobject.h"
#include <openspace/util/powerscaledcoordinate.h>
namespace {
const std::string _loggerCat = "MultiModelGeometry";
}
@@ -65,9 +67,16 @@ namespace openspace {
_vertices.reserve(vertices.size());
for (const auto & v : vertices)
{
psc p = PowerScaledCoordinate::CreatePowerScaledCoordinate(
v.location[0],
v.location[1],
v.location[2]
);
Vertex vv;
memcpy(vv.location, v.location, sizeof(GLfloat) * 3);
vv.location[3] = 1.0;
//memcpy(vv.location, v.location, sizeof(GLfloat) * 3);
memcpy(vv.location, glm::value_ptr(p.vec4()), sizeof(GLfloat) * 4);
//vv.location[3] = 1.0;
memcpy(vv.tex, v.tex, sizeof(GLfloat) * 2);
memcpy(vv.normal, v.normal, sizeof(GLfloat) * 3);
_vertices.push_back(vv);

View File

@@ -192,8 +192,8 @@ bool RenderableModelProjection::initialize() {
if (_programObject == nullptr) {
RenderEngine& renderEngine = OsEng.renderEngine();
_programObject = renderEngine.buildRenderProgram("ModelShader",
"${MODULES}/newhorizons/shaders/modelShader_vs.glsl",
"${MODULES}/newhorizons/shaders/modelShader_fs.glsl");
"${MODULE_NEWHORIZONS}/shaders/modelShader_vs.glsl",
"${MODULE_NEWHORIZONS}/shaders/modelShader_fs.glsl");
if (!_programObject)
return false;
@@ -202,8 +202,8 @@ bool RenderableModelProjection::initialize() {
if (_fboProgramObject == nullptr) {
_fboProgramObject = ghoul::opengl::ProgramObject::Build("ProjectionPass",
"${MODULES}/newhorizons/shaders/projectionPass_vs.glsl",
"${MODULES}/newhorizons/shaders/projectionPass_fs.glsl");
"${MODULE_NEWHORIZONS}/shaders/projectionPass_vs.glsl",
"${MODULE_NEWHORIZONS}/shaders/projectionPass_fs.glsl");
if (!_fboProgramObject)
return false;
}
@@ -336,7 +336,9 @@ void RenderableModelProjection::render(const RenderData& data) {
_viewProjection = data.camera.viewProjectionMatrix();
_programObject->setUniform("ViewProjection", _viewProjection);
_programObject->setUniform("ModelTransform", _transform);
setPscUniforms(*_programObject.get(), data.camera, data.position);
setPscUniforms(*_programObject, data.camera, data.position);
_geometry->setUniforms(*_programObject);
textureBind();
_geometry->render();