Example #1
0
void WldModel::readMaterials(Frag36* f36)
{
    WLD* wld = m_wld;
    
    // f36 -> f31 -> f30
    
    Frag31* f31 = (Frag31*)wld->getFrag(f36->materialListRef);
    
    if (!f31) throw 1; //fixme
    
    for (uint32_t i = 0; i < f31->refCount; i++)
    {
        Frag30* f30 = (Frag30*)wld->getFrag(f31->refList[i]);
        addMaterial(new WldMaterial(wld->getFragName(f30), f30->visibilityFlag));
        m_materialIndicesByF30[f30] = i + 1;
    }
    
    initVertexBuffers();
    
    for (uint32_t i = 0; i < f31->refCount; i++)
    {
        Frag30* f30 = (Frag30*)wld->getFrag(f31->refList[i]);
        handleF30(f30);
    }
}
Example #2
0
void WldModel::readAllMaterials()
{
    WLD* wld        = m_wld;
    auto& frag30s   = wld->getFragsByType(0x30);
    
    if (frag30s.size() == 0)
        throw 1; //fixme
    
    if (m_materialIndicesByF30.size() > 0)
        return;
    
    // Materials
    uint32_t i = 1; // Zeroth material is the NULL material
    
    for (Fragment* frag : frag30s)
    {
        Frag30* f30 = (Frag30*)frag;
        addMaterial(new WldMaterial(wld->getFragName(f30), f30->visibilityFlag));
        m_materialIndicesByF30[f30] = i++;
    }
    
    // VertexBuffers
    initVertexBuffers();
    
    // Textures
    for (Fragment* frag : frag30s)
    {
        Frag30* f30 = (Frag30*)frag;
        handleF30(f30);
    }
}
Example #3
0
void Engine::initialise( int argc, char** argv)
{
    initSDL();
    initGL();
    initShaders();

    initVertexBuffers();

    glGenVertexArrays(1, &vao);
    glBindVertexArray(vao);
    mainEngine();
}