summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-10-01 14:34:32 +0300
committerMika Salmela <mika.salmela@digia.com>2013-10-01 14:41:40 +0300
commit4511fc46caf955a555814b7bc2190908b399e3d4 (patch)
treed619dbb0da5bbc879c65c08d020455da1efcca64 /src
parent6a85b7fa00626c544103c48099260d7a36778686 (diff)
Texture coordinates updated on sample dimension change
It's about dimension change. Task-number: QTRD-2357 Change-Id: Iaa64569954a12ea846221111cbcf63753f5235d3 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp16
-rw-r--r--src/datavisualization/utils/surfaceobject.cpp23
-rw-r--r--src/datavisualization/utils/surfaceobject_p.h4
3 files changed, 21 insertions, 22 deletions
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 6238777e..c8aded31 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -242,12 +242,10 @@ void Surface3DRenderer::updateDataModel(QSurfaceDataProxy *dataProxy)
// Note: Data setup can change samplespace (as min width/height is 1)
if (m_cachedSmoothSurface) {
m_surfaceObj->setUpSmoothData(m_dataArray, m_sampleSpace, m_heightNormalizer,
- m_axisCacheY.min(), dimensionChanged,
- m_cachedSelectionMode != QDataVis::ModeNone);
+ m_axisCacheY.min(), dimensionChanged);
} else {
m_surfaceObj->setUpData(m_dataArray, m_sampleSpace, m_heightNormalizer,
- m_axisCacheY.min(), dimensionChanged,
- m_cachedSelectionMode != QDataVis::ModeNone);
+ m_axisCacheY.min(), dimensionChanged);
}
if (dimensionChanged)
@@ -295,10 +293,10 @@ void Surface3DRenderer::updateSliceDataModel(int selectionId)
if (m_cachedSmoothSurface) {
m_sliceSurfaceObj->setUpSmoothData(m_sliceDataArray, sliceRect, m_axisCacheY.min(),
- m_heightNormalizer, true, true);
+ m_heightNormalizer, true);
} else {
m_sliceSurfaceObj->setUpData(m_sliceDataArray, sliceRect, m_heightNormalizer,
- m_axisCacheY.min(), true, true);
+ m_axisCacheY.min(), true);
}
}
}
@@ -1808,12 +1806,10 @@ bool Surface3DRenderer::updateSmoothStatus(bool enable)
if (m_surfaceObj && changed && m_sampleSpace.width() >= 2 && m_sampleSpace.height() >= 2) {
if (m_cachedSmoothSurface) {
m_surfaceObj->setUpSmoothData(m_dataArray, m_sampleSpace, m_heightNormalizer,
- m_axisCacheY.min(), true,
- m_cachedSelectionMode != QDataVis::ModeNone);
+ m_axisCacheY.min(), true);
} else {
m_surfaceObj->setUpData(m_dataArray, m_sampleSpace, m_heightNormalizer,
- m_axisCacheY.min(), true,
- m_cachedSelectionMode != QDataVis::ModeNone);
+ m_axisCacheY.min(), true);
}
}
diff --git a/src/datavisualization/utils/surfaceobject.cpp b/src/datavisualization/utils/surfaceobject.cpp
index 3b58e781..8dd5f21f 100644
--- a/src/datavisualization/utils/surfaceobject.cpp
+++ b/src/datavisualization/utils/surfaceobject.cpp
@@ -43,8 +43,7 @@ SurfaceObject::~SurfaceObject()
}
void SurfaceObject::setUpSmoothData(const QSurfaceDataArray &dataArray, const QRect &space,
- GLfloat yRange, GLfloat yMin, bool changeGeometry,
- bool needTexture)
+ GLfloat yRange, GLfloat yMin, bool changeGeometry)
{
int columns = space.width();
int rows = space.height();
@@ -54,13 +53,15 @@ void SurfaceObject::setUpSmoothData(const QSurfaceDataArray &dataArray, const QR
GLfloat xNormalizer = (dataArray.at(0)->last().x() - xMin) / 2.0f;
GLfloat yNormalizer = yRange / 2.0f;
GLfloat zNormalizer = (dataArray.last()->at(0).z() - zMin) / -2.0f;
+ GLfloat uvX = 1.0 / GLfloat(columns - 1);
+ GLfloat uvY = 1.0 / GLfloat(rows - 1);
// Create/populate vertice table
if (changeGeometry)
m_vertices.resize(totalSize);
QVector<QVector2D> uvs;
- if (needTexture)
+ if (changeGeometry)
uvs.resize(totalSize);
int totalIndex = 0;
for (int i = 0; i < rows; i++) {
@@ -71,8 +72,8 @@ void SurfaceObject::setUpSmoothData(const QSurfaceDataArray &dataArray, const QR
float normalizedY = ((data.y() - yMin) / yNormalizer);
float normalizedZ = ((data.z() - zMin) / zNormalizer);
m_vertices[totalIndex] = QVector3D(normalizedX - 1.0f, normalizedY - 1.0f, normalizedZ + 1.0f);
- if (needTexture)
- uvs[totalIndex] = QVector2D(normalizedX / 2.0f, normalizedZ / -2.0f);
+ if (changeGeometry)
+ uvs[totalIndex] = QVector2D(GLfloat(j) * uvX, GLfloat(i) * uvY);
totalIndex++;
}
}
@@ -156,7 +157,7 @@ void SurfaceObject::setUpSmoothData(const QSurfaceDataArray &dataArray, const QR
void SurfaceObject::setUpData(const QSurfaceDataArray &dataArray, const QRect &space,
- GLfloat yRange, GLfloat yMin, bool changeGeometry, bool needTexture)
+ GLfloat yRange, GLfloat yMin, bool changeGeometry)
{
int columns = space.width();
int rows = space.height();
@@ -166,13 +167,15 @@ void SurfaceObject::setUpData(const QSurfaceDataArray &dataArray, const QRect &s
GLfloat xNormalizer = (dataArray.at(0)->last().x() - xMin) / 2.0f;
GLfloat yNormalizer = yRange / 2.0f;
GLfloat zNormalizer = (dataArray.last()->at(0).z() - zMin) / -2.0f;
+ GLfloat uvX = 1.0 / GLfloat(columns - 1);
+ GLfloat uvY = 1.0 / GLfloat(rows - 1);
// Create vertice table
if (changeGeometry)
m_vertices.resize(totalSize);
QVector<QVector2D> uvs;
- if (needTexture)
+ if (changeGeometry)
uvs.resize(totalSize);
int totalIndex = 0;
@@ -189,14 +192,14 @@ void SurfaceObject::setUpData(const QSurfaceDataArray &dataArray, const QRect &s
float normalizedY = ((data.y() - yMin) / yNormalizer);
float normalizedZ = ((data.z() - zMin) / zNormalizer);
m_vertices[totalIndex] = QVector3D(normalizedX - 1.0f, normalizedY - 1.0f, normalizedZ + 1.0f);
- if (needTexture)
- uvs[totalIndex] = QVector2D(normalizedX / 2.0f, normalizedZ / -2.0f);
+ if (changeGeometry)
+ uvs[totalIndex] = QVector2D(GLfloat(j) * uvX, GLfloat(i) * uvY);
totalIndex++;
if (j > 0 && j < colLimit) {
m_vertices[totalIndex] = m_vertices[totalIndex - 1];
- if (needTexture)
+ if (changeGeometry)
uvs[totalIndex] = uvs[totalIndex - 1];
totalIndex++;
}
diff --git a/src/datavisualization/utils/surfaceobject_p.h b/src/datavisualization/utils/surfaceobject_p.h
index c8273b1b..ab490960 100644
--- a/src/datavisualization/utils/surfaceobject_p.h
+++ b/src/datavisualization/utils/surfaceobject_p.h
@@ -45,9 +45,9 @@ public:
~SurfaceObject();
void setUpData(const QSurfaceDataArray &dataArray, const QRect &space, GLfloat yRange,
- GLfloat yMin, bool changeGeometry, bool needTexture);
+ GLfloat yMin, bool changeGeometry);
void setUpSmoothData(const QSurfaceDataArray &dataArray, const QRect &space, GLfloat yRange,
- GLfloat yMin, bool changeGeometry, bool needTexture);
+ GLfloat yMin, bool changeGeometry);
GLuint gridElementBuf();
GLuint gridIndexCount();