/*!**************************************************************************** @Function LoadTextures @Return bool true if no error occured @Description Loads the textures required for this training course ******************************************************************************/ bool OGLES2FilmTV::LoadTextures(CPVRTString* pErrorStr) { /* Loads the textures. For a more detailed explanation, see Texturing and IntroducingPVRTools */ /* Initialises an array to lookup the textures for each material in the scene. */ m_puiTextureIDs = new GLuint[m_Scene.nNumMaterial]; if(!m_puiTextureIDs) { *pErrorStr = "ERROR: Insufficient memory."; return false; } for(unsigned int i = 0; i < m_Scene.nNumMaterial; ++i) { m_puiTextureIDs[i] = 0; SPODMaterial* pMaterial = &m_Scene.pMaterial[i]; if(pMaterial->nIdxTexDiffuse != -1) { /* Using the tools function PVRTTextureLoadFromPVR load the textures required by the pod file. Note: This function only loads .pvr files. You can set the textures in 3D Studio Max to .pvr files using the PVRTexTool plug-in for max. Alternatively, the pod material properties can be modified in PVRShaman. */ CPVRTString sTextureName = m_Scene.pTexture[pMaterial->nIdxTexDiffuse].pszName; if(sTextureName == "TV.pvr") m_uiTVScreen = i; if(PVRTTextureLoadFromPVR(sTextureName.c_str(), &m_puiTextureIDs[i]) != PVR_SUCCESS) { *pErrorStr = "ERROR: Failed to load " + sTextureName + "."; // Check to see if we're trying to load .pvr or not CPVRTString sFileExtension = PVRTStringGetFileExtension(sTextureName); if(sFileExtension.toLower() != "pvr") *pErrorStr += "Note: FilmTV can only load .pvr files."; return false; } } } return true; }
/*!**************************************************************************** @Function LoadTextures @Return bool true if no error occurred @Description Loads the textures required for this training course ******************************************************************************/ bool OGLES3DisplacementMap::LoadTextures(CPVRTString* pErrorStr) { /* Load the textures. For a more detailed explanation, see Texturing and IntroducingPVRTools */ /* Initialises an array to lookup the textures for each material in the scene. */ m_puiTextureIDs = new GLuint[m_Scene.nNumMaterial]; if(!m_puiTextureIDs) { *pErrorStr = "ERROR: Insufficient memory."; return false; } for(int i = 0; i < (int) m_Scene.nNumMaterial; ++i) { m_puiTextureIDs[i] = 0; SPODMaterial* pMaterial = &m_Scene.pMaterial[i]; if(pMaterial->nIdxTexDiffuse != -1) { /* Using the tools function PVRTTextureLoadFromPVR load the textures required by the pod file. Note: This function only loads .pvr files. You can set the textures in 3D Studio Max to .pvr files using the PVRTexTool plug-in for max. Alternatively, the pod material properties can be modified in PVRShaman. */ CPVRTString sTextureName = m_Scene.pTexture[pMaterial->nIdxTexDiffuse].pszName; if(PVRTTextureLoadFromPVR(sTextureName.c_str(), &m_puiTextureIDs[i]) != PVR_SUCCESS) { *pErrorStr = "ERROR: Failed to load " + sTextureName + "."; // Check to see if we're trying to load .pvr or not CPVRTString sFileExtension = PVRTStringGetFileExtension(sTextureName); if(sFileExtension.toLower() == "pvr") *pErrorStr += "Note: Can only load pvr files."; return false; } } } // Load the texture used for the displacement map if(PVRTTextureLoadFromPVR(c_szDisMapFile, &m_uiDisMapID) != PVR_SUCCESS) { *pErrorStr = "ERROR: Failed to load " + CPVRTString(c_szDisMapFile) + "."; return false; } // Define the wrapping to use for the displacement map glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); return true; }