bool ShaderSaveManager::SaveShader(const string &fileName, const ShaderData *shaderData,string &retFileName) const { //Init the return values bool retValue = false; retFileName = ""; //Save the shaders based on the different types switch(shaderData->GetGLType()) { //Note: GL_VERTEX_PROGRAM_NV is the same enum case(GL_VERTEX_PROGRAM_ARB) : case(GL_FRAGMENT_PROGRAM_ARB) : retValue = SaveARBShader(fileName,shaderData,retFileName); break; case(GL_FRAGMENT_PROGRAM_NV) : case(GL_VERTEX_STATE_PROGRAM_NV): retValue = SaveNVShader(fileName,shaderData,retFileName); break; //For a new type, just write it out default: LOGERR(("ShaderSaveManager::SaveShader - Unknown shader type %x",shaderData->GetGLType())); retValue = WriteShaderFile(fileName,shaderData->GetShaderSource().c_str(), (uint)shaderData->GetShaderSource().length(),retFileName); } return retValue; }
bool ShaderGLSLSaveManager::SaveShader(const string &fileName, const ShaderGLSLData *shaderData, string &retFileName) const { //Init the return values bool retValue = false; retFileName = ""; //Save the shaders based on the different types switch(shaderData->GetGLType()) { case(GL_VERTEX_SHADER): case(GL_GEOMETRY_SHADER): case(GL_FRAGMENT_SHADER): retValue = SaveFragmentVertexShaderData(fileName,shaderData,retFileName); break; case(GL_PROGRAM_OBJECT_ARB): retValue = SaveProgramData(fileName,shaderData,retFileName); break; //For a new type, just write it out default: LOGERR(("ShaderGLSLSaveManager::ShaderGLSLData - Unknown shader type %x",shaderData->GetGLType())); retValue = WriteShaderFile(fileName,shaderData->GetShaderSource().c_str(), (uint)shaderData->GetShaderSource().length(),retFileName); } return retValue; }
bool ShaderSaveManager::SaveARBShader(const string &fileName, const ShaderData *shaderData,string &retFileName) const { //Format the string //isspace //Save the program string return WriteShaderFile(fileName,shaderData->GetShaderSource().c_str(), (uint)shaderData->GetShaderSource().length(),retFileName); }
bool ShaderGLSLSaveManager::SaveProgramData(const string &fileName, const ShaderGLSLData *programData, string &retFileName) const { //Future formatting options? // Add log info string writeString = programData->GetShaderLog() + programData->GetShaderSource(); return WriteShaderFile(fileName,writeString.c_str(), (uint)writeString.length(),retFileName); }
bool ShaderGLSLSaveManager::SaveFragmentVertexShaderData(const string &fileName, const ShaderGLSLData *shaderData,string &retFileName) const { //Future formatting options? // Add log info string writeString = shaderData->GetShaderLog() + shaderData->GetShaderSource(); //Write the sahder to disk return WriteShaderFile(fileName,writeString.c_str(), (uint)writeString.length(),retFileName); }