Exemplo n.º 1
0
void GeometryProcessor::handleGeometry( RenderBackend::Mesh *geo ) {
    OSRE_ASSERT( nullptr != geo );

    if ( nullptr == geo ) {
        return;
    }

    ui32 offsetPos( 0 ), stride( 0 );
    switch ( geo->m_vertextype ) {
        case VertexType::RenderVertex:
            offsetPos = 0;
            stride = sizeof( RenderVert );
            break;

        case VertexType::ColorVertex:
            offsetPos = 0;
            stride = sizeof( ColorVert );
            break;

        default:
            break;
    }

    BufferData *data = geo->m_vb;
    if ( nullptr == data || 0 == data->getSize() ) {
        return;
    }

    ui32 offset( 0 );
    const ui32 numVertices = (ui32) data->getSize() / stride;
    for ( ui32 i = 0; i < numVertices; i++ ) {
        glm::vec3 pos;
        uc8 *ptr = (uc8*) data->getData();
        ::memcpy( &pos.x, &ptr[offset], sizeof( glm::vec3 ) );
        offset += stride;
        m_aabb.merge( pos.x, pos.y, pos.z );
    }
}
Exemplo n.º 2
0
int nme_buffer_offset(int inPtr)
{
   BufferData *data = (BufferData *)inPtr;
   //data->verify("nme_buffer_offset");
   return (int)data->getData();
}