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); } }
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); } }
void Engine::initialise( int argc, char** argv) { initSDL(); initGL(); initShaders(); initVertexBuffers(); glGenVertexArrays(1, &vao); glBindVertexArray(vao); mainEngine(); }