//------------------------------------------------------------------------------------------------------ RotatingRing::RotatingRing() :LocatableObject( this ), m_isMaked(false), m_pRingBuffer(NULL), m_fRadius(0) { float bs = 1.5 * 1; m_BindBox = aabbox3df( vector3f( -bs, -bs, -bs ), vector3f( bs, bs, bs ) ); m_isMaked = true; m_fRadius = 1; ASSERT( 3 == RC_AXIS ); VertexColor LineVertex[ RC_AXIS * RC_POINT ]; static ushort Indies[RC_AXIS*RC_POINT*2]; for ( int i = 0 ; i < RC_AXIS*RC_POINT*2; i += 2 ) { Indies[i] = i/2; //Indies[i+1] = (i/2)%RC_POINT==0&&0!=i ? i-RC_POINT*2 : i/2+1 ; if ( i/2 == RC_POINT-1 || i/2 == RC_POINT*2-1 || i/2 == RC_POINT*3-1 ) { Indies[i+1] = i/2-RC_POINT+1; } else { Indies[i+1] = i/2+1; } } m_pRingBuffer = NEW RendBuffer( Device::RM_LINES ); m_pVertexBuffer = NEW VertexBuffer( Device::MU_DYNAMIC ); m_pIndicesBuffer = NEW IndicesBuffer( Device::MU_STATIC ); m_pRingBuffer->SetVertexBuffer( m_pVertexBuffer ); m_pRingBuffer->SetIndicesBuffer( m_pIndicesBuffer ); m_pIndicesBuffer->FlushIndiesBuffer( RC_AXIS*RC_POINT*2, Indies ); }
//------------------------------------------------------------------------------------------------------ GridNode::GridNode(void) :m_pRendBuffer(NULL) { m_pRendBuffer = NEW RendBuffer( Device::RM_LINES ); m_pVertexBuffer = NEW VertexBuffer( Device::MU_DYNAMIC ); m_pIndicesBuffer = NEW IndicesBuffer( Device::MU_DYNAMIC ); m_pRendBuffer->SetVertexBuffer( m_pVertexBuffer ); m_pRendBuffer->SetIndicesBuffer( m_pIndicesBuffer ); }
////////////////////////////// // BillboardNode // ///////////////////////////// //------------------------------------------------------------------------------------- BillboardNode::BillboardNode() :m_pTexture(NULL) { ushort Indies[Billboard::COUNT_OF_INDIES]={0,1,2, 2,1,3}; m_pRendBuffer = NEW RendBuffer( Billboard::GetRenderMode() ); m_pVertexBuffer = NEW VertexBuffer( Device::MU_DYNAMIC ); m_pIndicesBuffer = NEW IndicesBuffer( Device::MU_STATIC ); m_pRendBuffer->SetVertexBuffer( m_pVertexBuffer ); m_pRendBuffer->SetIndicesBuffer( m_pIndicesBuffer ); m_pIndicesBuffer->FlushIndiesBuffer( Billboard::COUNT_OF_INDIES, &Indies[0] ); }
//------------------------------------------------------------------------------------------------------ void Rect2D::NewRect2D() { m_pVertexArray = NEW VertexColor[COUNT_OF_VERTEX]; static ushort Indies[COUNT_OF_INDIES]={0,1, 1,2, 2,3, 3,0}; m_pRendBuffer = NEW RendBuffer( Device::RM_LINES ); m_pVertexBuffer = NEW VertexBuffer( Device::MU_DYNAMIC ); m_pIndicesBuffer = NEW IndicesBuffer( Device::MU_STATIC ); m_pRendBuffer->SetVertexBuffer( m_pVertexBuffer ); m_pRendBuffer->SetIndicesBuffer( m_pIndicesBuffer ); m_pIndicesBuffer->FlushIndiesBuffer( COUNT_OF_INDIES, &Indies[0] ); }
//------------------------------------------------------------------------------------------------------ LineNode::LineNode( const vector4f& b, const vector4f& e, const Color& c ) { m_BindBox.Contains( vector3f(b) ); m_BindBox.Contains( vector3f(e) ); m_pVertexArray = NEW VertexColor[COUNT_OF_VERTEX]; m_pVertexArray[0].SetVertex( b ); m_pVertexArray[0].SetColor( c ); m_pVertexArray[1].SetVertex( e ); m_pVertexArray[1].SetColor( c ); static ushort Indies[COUNT_OF_INDIES]={0,1}; m_pRendBuffer = NEW RendBuffer( Device::RM_LINE_STRIP ); m_pVertexBuffer = NEW VertexBuffer( Device::MU_DYNAMIC ); m_pIndicesBuffer = NEW IndicesBuffer( Device::MU_STATIC ); m_pRendBuffer->SetVertexBuffer( m_pVertexBuffer ); m_pRendBuffer->SetIndicesBuffer( m_pIndicesBuffer ); m_pVertexBuffer->FlushVertexBuffer( COUNT_OF_VERTEX, m_pVertexArray ); m_pIndicesBuffer->FlushIndiesBuffer( COUNT_OF_INDIES, &Indies[0] ); }
//------------------------------------------------------------------------------------------------------- RendBuffer* StringManager::_AllocBuffer() { if( 0 != m_FreeBufferList.size() ) { RendBufferList::iterator it = m_FreeBufferList.begin(); RendBuffer* reslut = (*it); m_FreeBufferList.erase( it ); return reslut; } static ushort Indies[BString::COUNT_OF_INDIES]= {0,1,2,3}; RendBuffer* rb; VertexBuffer* vb; IndicesBuffer* ib; rb = NEW RendBuffer(Device::RM_TRIANGLE_STRIP); vb = NEW VertexBuffer( Device::MU_DYNAMIC ); ib = NEW IndicesBuffer( Device::MU_STATIC ); rb->SetVertexBuffer( vb ); rb->SetIndicesBuffer( ib ); ib->FlushIndiesBuffer( BString::COUNT_OF_INDIES, &Indies[0] ); return rb; }
//------------------------------------------------------------------------------------------------------ Rect3D::Rect3D(const vector3f& ulb, const vector3f& drf, const Color& color) { m_pVertexArray = NEW VertexColor[COUNT_OF_VERTEX]; m_pVertexArray[0] = VertexColor( vector4f(ulb.m_x, ulb.m_y, drf.m_z), color ) ; m_pVertexArray[1] = VertexColor( vector4f(drf.m_x, ulb.m_y, drf.m_z), color ) ; m_pVertexArray[2] = VertexColor( vector4f(drf.m_x, drf.m_y, drf.m_z), color ) ; m_pVertexArray[3] = VertexColor( vector4f(ulb.m_x, drf.m_y, drf.m_z), color ) ; m_pVertexArray[4] = VertexColor( vector4f(ulb.m_x, ulb.m_y, ulb.m_z), color ) ; m_pVertexArray[5] = VertexColor( vector4f(drf.m_x, ulb.m_y, ulb.m_z), color ) ; m_pVertexArray[6] = VertexColor( vector4f(drf.m_x, drf.m_y, ulb.m_z), color ) ; m_pVertexArray[7] = VertexColor( vector4f(ulb.m_x, drf.m_y, ulb.m_z), color ) ; static ushort Indies[COUNT_OF_INDIES]={ 0,1, 1,2, 2,3, 3,0, 0,4, 1,5, 2,6, 3,7, 4,5, 5,6, 6,7, 7,4}; m_pRendBuffer = NEW RendBuffer( Device::RM_LINES ); m_pVertexBuffer = NEW VertexBuffer( Device::MU_DYNAMIC ); m_pIndicesBuffer = NEW IndicesBuffer( Device::MU_STATIC ); m_pRendBuffer->SetVertexBuffer( m_pVertexBuffer ); m_pRendBuffer->SetIndicesBuffer( m_pIndicesBuffer ); m_pVertexBuffer->FlushVertexBuffer( COUNT_OF_VERTEX, m_pVertexArray ); m_pIndicesBuffer->FlushIndiesBuffer( COUNT_OF_INDIES, &Indies[0] ); }