示例#1
0
void MeshObject::Render()
{
    traceIn(MeshObject::Render);

    LoadVertexBuffer(mesh->VertBuffer);
    LoadIndexBuffer(mesh->IdxBuffer);

    for(DWORD i=0;i<mesh->nSections;i++)
    {
        DrawSection &section  = mesh->SectionList[i];
        Material    *material = MaterialList[i];

        if(!material)
            continue;

        if(material->GetEffect() == GetActiveEffect())
            material->LoadParameters();

        if(material->GetFlags() & MATERIAL_TWOSIDED)
        {
            GSCullMode cullMode;
            cullMode = GetCullMode();
            SetCullMode(GS_NEITHER);
            GS->Draw(GS_TRIANGLES, 0, section.startFace*3, section.numFaces*3);
            SetCullMode(cullMode);
        }
        else
            GS->Draw(GS_TRIANGLES, 0, section.startFace*3, section.numFaces*3);
    }

    traceOut;
}