mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-07 04:00:37 -06:00
Reintroduce powerscaled coordinates to modelgeometry to fix scaling issue
Correctly set magnification property in RenderableModelProjection
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user