#ifndef UNITRENDERER_H #define UNITRENDERER_H #include #include #include #include #include #include #include #include #include #include "unit.h" #include "player.h" #include "city.h" class UnitRenderer : protected QOpenGLFunctions_4_0_Core { public: UnitRenderer(); ~UnitRenderer(); void initialize(); void renderUnits( const std::vector> &units, const std::vector &cities, const PlayerManager &players, const QMatrix4x4 &projection, const QMatrix4x4 &vMatrix, const QVector3D &lightDir, int selectedUnitId ); static QPointF projectToScreen( const QVector3D &worldPoint, const QMatrix4x4 &projection, const QMatrix4x4 &vMatrix, int viewportW, int viewportH, bool &inFront ); private: void buildCylinderMesh(); QOpenGLShaderProgram *m_program; QOpenGLBuffer m_vbo; QOpenGLVertexArrayObject m_vao; int m_vertexCount; bool m_initialized; }; #endif // UNITRENDERER_H