Пример #1
0
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;
}
Пример #3
0
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);
}