bool Shader::Load(const void* wrapper) { EntityManager::Ptr entityMgr = EntityManager::Instance(); std::string str; if (!LoadMemberValue(wrapper, "type", str)) { FURYE << "Shader param 'type' not found!"; return false; } m_Type = EnumUtil::ShaderTypeFromString(str); // read shader texture flags std::vector<ShaderTexture> textures; m_TextureFlags = 0; if (LoadArray(wrapper, "textures", [&](const void* node) -> bool { if (!LoadValue(node, str)) { FURYE << "Shader's texture flag not found!"; return false; } textures.push_back(EnumUtil::ShaderTextureFromString(str)); return true; })) { for (auto texture : textures) m_TextureFlags = m_TextureFlags | (unsigned int)texture; } // end: read shader texture flags if (!LoadMemberValue(wrapper, "path", str)) { FURYE << "Shader param 'path' not found!"; return false; } LoadAndCompile(FileUtil::GetAbsPath() + str); return true; }
bool Shader::Load(const void* wrapper) { EntityUtil::Ptr entityUtil = EntityUtil::Instance(); EnumUtil::Ptr enumUtil = EnumUtil::Instance(); std::string str; if (!LoadMemberValue(wrapper, "type", str)) { LOGE << "Shader param 'type' not found!"; return false; } m_Type = enumUtil->ShaderTypeFromString(str); if (!LoadMemberValue(wrapper, "path", str)) { LOGE << "Shader param 'path' not found!"; return false; } LoadAndCompile(str); return true; }
LptaD3DVertexShaderManager::LptaD3DVertexShaderManager(LPDIRECT3DDEVICE9 d3ddev) : d3ddev(d3ddev) { LPDIRECT3DVERTEXSHADER9 defaultShader = LoadAndCompile(defaultShaderProgram); this->SetNullResource(LptaD3DVertexShader(GetNextId(), defaultShader)); }