Пример #1
0
void OgreXmlSerializer::ReadGeometry(VertexDataXml *dest)
{
    dest->count = ReadAttribute<uint32_t>("vertexcount");
    DefaultLogger::get()->debug(Formatter::format() << "  - Reading geometry of " << dest->count << " vertices");

    NextNode();
    while(m_currentNodeName == nnVertexBuffer) {
        ReadGeometryVertexBuffer(dest);
    }
}
Пример #2
0
    void DiMeshSerializerImpl::ReadGeometry( DiDataStreamPtr& stream, DiSubMesh* pMesh )
    {
        DI_SERIAL_LOG("Reading geometry data...");

        unsigned int vertexCount = 0;
        ReadInts(stream, &vertexCount, 1);
        pMesh->SetVerticeNum(vertexCount);

        DI_SERIAL_LOG("Vertices count: %d", vertexCount);

        unsigned int faceCount = 0;
        ReadInts(stream, &faceCount, 1);
        pMesh->SetPrimitiveCount(faceCount);

        DI_SERIAL_LOG("Face count: %d", faceCount);

        if (!stream->Eof())
        {
            unsigned short streamID = ReadChunk(stream);
            while(!stream->Eof() &&
                (streamID == DI_GEOMETRY_VERTEX_BUFFER ||
                streamID == DI_GEOMETRY_VERTEX_DECLARATION))
            {
                switch (streamID)
                {
                case DI_GEOMETRY_VERTEX_DECLARATION:
                    ReadGeometryVertexDeclaration(stream, pMesh);
                    break;
                case DI_GEOMETRY_VERTEX_BUFFER:
                    ReadGeometryVertexBuffer(stream, pMesh);
                    break;
                }

                if (!stream->Eof())
                {
                    streamID = ReadChunk(stream);
                }
            }
            if (!stream->Eof())
            {
                stream->Skip(-MSTREAM_OVERHEAD_SIZE);
            }
        }
    }