00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <drawable/multiPrim.h>
00025 #include <state/shader.h>
00026 #include <iostream>
00027
00028 using namespace std;
00029 using namespace gutz;
00030
00031 using namespace glift;
00032
00033
00034
00035
00036
00037 MultiPrim::MultiPrim( const VecSinglePrimP& prim ) : m_prim( prim )
00038 {}
00039
00040 void MultiPrim::init( const VecSinglePrimP& prim )
00041 {
00042 m_prim = prim;
00043 }
00044
00045 MultiPrimTexCoord* MultiPrim::genTexCoords( const Shader* shader )
00046 {
00047 MultiPrimTexCoord* vecTexCoords = new MultiPrimTexCoord( m_prim.size() );
00048
00049 for(uint i=0; i < m_prim.size(); i++) {
00050 MultiTexCoord* primTexCoords = shader->genTexCoords( m_prim[i]->texCoord(), m_prim[i]->scale() );
00051 (*vecTexCoords)[i] = primTexCoords;
00052 }
00053 return vecTexCoords;
00054 }
00055
00056
00057 bool MultiPrim::hasTexCoords() const
00058 {
00059 bool retVal = true;
00060 for(uint i=0; i < m_prim.size(); i++) {
00061 retVal &= m_prim[i]->hasTexCoords();
00062 }
00063 return retVal;
00064 }
00065
00066 void MultiPrim::bindTexCoords( const MultiPrimTexCoord* texCoordsPtr )
00067 {
00068 for(uint i=0; i < m_prim.size(); i++ ) {
00069 m_prim[i]->bindTexCoords( (*texCoordsPtr)[i] );
00070 }
00071 }
00072
00073 void MultiPrim::bindTexCoords( const MultiTexCoord* texCoordsPtr )
00074 {
00075 for(uint i=0; i < m_prim.size(); i++ ) {
00076 m_prim[i]->bindTexCoords( texCoordsPtr );
00077 }
00078 }
00079
00080 void MultiPrim::releaseTexCoords()
00081 {
00082 for(uint i=0; i < m_prim.size(); i++ ) {
00083 m_prim[i]->releaseTexCoords();
00084 }
00085 }
00086
00087 void MultiPrim::bindIndices( const MultiPrimIndices* indices )
00088 {
00089 for(uint i=0; i < m_prim.size(); i++) {
00090 m_prim[i]->bindIndices( (*indices)[i] );
00091 }
00092 }
00093
00094 void MultiPrim::bindIndices( const arrayw1ui* indices )
00095 {
00096 for(uint i=0; i < m_prim.size(); i++) {
00097 m_prim[i]->bindIndices( indices );
00098 }
00099 }
00100
00101 void MultiPrim::releaseIndices()
00102 {
00103 for(uint i=0; i < m_prim.size(); i++ ) {
00104 m_prim[i]->releaseIndices();
00105 }
00106 }
00107
00108 void MultiPrim::drawDef()
00109 {
00110 for(uint i=0; i < m_prim.size() ; i++ ) {
00111
00112 m_prim[i]->draw();
00113 }
00114 }
00115
00116