diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gldisc.cpp | 20 | ||||
| -rw-r--r-- | src/gldisc.h | 2 | ||||
| -rw-r--r-- | src/mmscene.cpp | 2 |
3 files changed, 12 insertions, 12 deletions
diff --git a/src/gldisc.cpp b/src/gldisc.cpp index 5002fe8..601ef25 100644 --- a/src/gldisc.cpp +++ b/src/gldisc.cpp @@ -1,7 +1,7 @@ #include "gldisc.h" -GLDisc::GLDisc(double radius, double height, int sides) - :GLBody(radius) +GLDisc::GLDisc(double radius, double height, int sides, GLColorRgba color, QString textureFile) + :GLBody(radius, color, textureFile) { m_height = height; m_sides = sides; @@ -11,23 +11,23 @@ void GLDisc::makeSurface(QVector<GLPoint> *pointContainer, QVector<GLshort> *ind { GLBody::makeSurface(pointContainer, indexContainer); - QVector3D t0 = QVector3D(0.0, 0.0, 0.0); //dummy texture - m_firstPoint = m_points->size(); - m_points->append(GLPoint(v_Zero, -v_Z, t0, m_color)); + m_points->append(GLPoint(v_Zero, -v_Z, QVector3D(0.5, 0.5, 0.0), m_color)); for(int side = 0; side < m_sides; side++) { QVector2D tmp = calculatePoint(side * 2 * M_PI / m_sides); - m_points->append(GLPoint(m_radius * tmp, -v_Z, t0, m_color)); - m_points->append(GLPoint(m_radius * tmp, tmp, t0, m_color)); - m_points->append(GLPoint(QVector3D(m_radius * tmp, m_height), tmp, t0, m_color)); - m_points->append(GLPoint(QVector3D(m_radius * tmp, m_height), v_Z, t0, m_color)); + QVector2D tmpTextCoo = (0.5 * tmp) + QVector2D(0.5, 0.5); + + m_points->append(GLPoint(m_radius * tmp, -v_Z, tmpTextCoo, m_color)); + m_points->append(GLPoint(m_radius * tmp, tmp, tmpTextCoo, m_color)); + m_points->append(GLPoint(QVector3D(m_radius * tmp, m_height), tmp, tmpTextCoo, m_color)); + m_points->append(GLPoint(QVector3D(m_radius * tmp, m_height), v_Z, tmpTextCoo, m_color)); } - m_points->append(GLPoint(m_height * v_Z, v_Z, t0, m_color)); + m_points->append(GLPoint(m_height * v_Z, v_Z, QVector3D(0.5, 0.5, 0.0), m_color)); m_nextPoint = m_points->size(); diff --git a/src/gldisc.h b/src/gldisc.h index 18e935e..5031e84 100644 --- a/src/gldisc.h +++ b/src/gldisc.h @@ -8,7 +8,7 @@ class GLDisc : public GLBody { public: - GLDisc(double radius = 1.0, double height = 2.0, int sides = 10); + GLDisc(double radius = 1.0, double height = 2.0, int sides = 10, GLColorRgba color = GLColorRgba::clBlue, QString textureFile = ""); virtual void makeSurface(QVector<GLPoint> *pointContainer, QVector<GLshort> *indexContainer); virtual bool isHit(QVector3D p1, QVector3D p2); diff --git a/src/mmscene.cpp b/src/mmscene.cpp index f922de9..45b913f 100644 --- a/src/mmscene.cpp +++ b/src/mmscene.cpp @@ -112,7 +112,7 @@ void MMScene::createSphere() void MMScene::createDisc() { - m_disc = new GLDisc(1.0, 2.0, 10); + m_disc = new GLDisc(1.0, 0.5, 10, GLColorRgba::clBlue, ":/textures/white_disc.jpg"); m_disc->setDrawingMode(GL_TRIANGLES); m_disc->makeSurface(&m_points, &m_indices); |
