Stellarium  0.90.0
Public Types | Public Member Functions | Data Fields
StelVertexArray Struct Reference

Public Types

enum  StelPrimitiveType {
  Points = 0x0000, Lines = 0x0001, LineLoop = 0x0002, LineStrip = 0x0003,
  Triangles = 0x0004, TriangleStrip = 0x0005, TriangleFan = 0x0006
}
 

Public Member Functions

 StelVertexArray (StelPrimitiveType pType=StelVertexArray::Triangles)
 
 StelVertexArray (const QVector< Vec3d > &v, StelPrimitiveType pType=StelVertexArray::Triangles, const QVector< Vec2f > &t=QVector< Vec2f >(), const QVector< unsigned short > i=QVector< unsigned short >())
 
bool isIndexed () const
 
bool isTextured () const
 
bool isColored () const
 
template<class Func >
Func foreachTriangle (Func func) const
 call a function for each triangle of the array. More...
 
StelVertexArray removeDiscontinuousTriangles (const class StelProjector *prj) const
 Create a copy of the array with all the triangles intersecting the projector discontinuity removed.
 

Data Fields

QVector< Vec3dvertex
 OpenGL compatible array of 3D vertex to be displayed using vertex arrays. More...
 
QVector< Vec2ftexCoords
 OpenGL compatible array of edge flags to be displayed using vertex arrays.
 
QVector< Vec3fcolors
 OpenGL compatible array of vertex colors to be displayed using arrays. More...
 
QVector< unsigned short > indices
 OpenGL compatible array of indices for the vertex and the textures.
 
StelPrimitiveType primitiveType
 

Member Function Documentation

template<class Func >
Func StelVertexArray::foreachTriangle ( Func  func) const
inline

func should define the following method : void operator() (const Vec3d* vertex[3], const Vec2f* tex[3], const Vec3f* colors[3], unsigned int indices[3]) The method takes arrays of pointers as arguments because we can't assume the values are contiguous

Field Documentation

QVector<Vec3f> StelVertexArray::colors

The color (if exists) shall be multiplied with texture to modulate e.g. for extinction of Milky Way or other large items.

QVector<Vec3d> StelVertexArray::vertex

TODO, move to float? Most of the vectors are normalized, thus the precision is around 1E-45 using float which is enough (=2E-37 milli arcsec).