00001 //============================================================================= 00016 #ifndef __VERTEXSTREAM_H_INCLUDED__ 00017 #define __VERTEXSTREAM_H_INCLUDED__ 00018 00019 #include "vector.h" 00020 00021 // forward declarations 00022 class VertexAttribLocations; 00023 00024 00025 //============================================================================= 00026 // IVertexStream 00027 //============================================================================= 00028 00033 class IVertexStream 00034 { 00035 public: 00039 static IVertexStream* create( int numVertices ); 00040 virtual ~IVertexStream( void ) {} 00041 00048 virtual void coumputeTangentVectors( void ) = 0; 00049 00055 virtual float computeBoundingRadius( void ) = 0; 00056 00066 virtual void render( int primitiveType, const vec4_t * overrideColor = NULL, 00067 const VertexAttribLocations * attribs = NULL ) = 0; 00068 00075 virtual void renderNormals( void ) = 0; 00076 00082 virtual void renderTangentVectors( void ) = 0; 00083 00084 // vertex arrays access 00085 virtual vec3_t* v( void ) = 0; 00086 virtual vec3_t* n( void ) = 0; 00087 virtual vec2_t* t( void ) = 0; 00088 virtual vec4_t* c( void ) = 0; 00089 virtual vec3_t* tan1( void ) = 0; 00090 virtual vec3_t* tan2( void ) = 0; 00091 }; 00092 00093 00094 #endif // __VERTEXSTREAM_H_INCLUDED__ 00095 00096