Changeset 7221 in orxonox.OLD for trunk/src/lib/graphics/shader.cc
- Timestamp:
- Mar 15, 2006, 3:10:45 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/graphics/shader.cc
r7193 r7221 36 36 * standard constructor 37 37 */ 38 Shader::Shader (const char* vertexShaderFile, const char*fragmentShaderFile)38 Shader::Shader (const std::string& vertexShaderFile, const std::string& fragmentShaderFile) 39 39 { 40 40 this->setClassID(CL_SHADER, "Shader"); 41 41 42 this->fragmentShaderFile = NULL;43 this->vertexShaderFile = NULL;42 this->fragmentShaderFile = ""; 43 this->vertexShaderFile = ""; 44 44 this->shaderProgram = 0; 45 45 this->vertexShader = 0; … … 52 52 this->shaderProgram = glCreateProgramObjectARB(); 53 53 54 if ( vertexShaderFile != NULL)54 if (!vertexShaderFile.empty()) 55 55 this->loadShaderProgramm(SHADER_VERTEX, vertexShaderFile); 56 if ( fragmentShaderFile != NULL)56 if (!fragmentShaderFile.empty()) 57 57 this->loadShaderProgramm(SHADER_FRAGMENT, fragmentShaderFile); 58 58 glLinkProgramARB(this->shaderProgram); … … 103 103 } 104 104 105 Shader* Shader::getShader(const char* vertexShaderFile, const char*fragmentShaderFile)105 Shader* Shader::getShader(const std::string& vertexShaderFile, const std::string& fragmentShaderFile) 106 106 { 107 107 return (Shader*)ResourceManager::getInstance()->load(vertexShaderFile, SHADER, RP_LEVEL, fragmentShaderFile); … … 116 116 117 117 118 bool Shader::loadShaderProgramm(SHADER_TYPE type, const char*fileName)118 bool Shader::loadShaderProgramm(SHADER_TYPE type, const std::string& fileName) 119 119 { 120 120 GLhandleARB shader = 0; … … 129 129 if (type == SHADER_VERTEX && GLEW_ARB_vertex_shader) 130 130 { 131 this->vertexShaderFile = new char[strlen(fileName)+1]; 132 strcpy(this->vertexShaderFile, fileName); 131 this->vertexShaderFile = fileName; 133 132 134 133 shader = this->vertexShader = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB); … … 137 136 if (type == SHADER_FRAGMENT && GLEW_ARB_fragment_shader) 138 137 { 139 this->fragmentShaderFile = new char[strlen(fileName)+1]; 140 strcpy(this->fragmentShaderFile, fileName); 138 this->fragmentShaderFile = fileName; 141 139 142 140 shader = this->fragmentShader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB); … … 146 144 { 147 145 GLint status = 0; 148 glShaderSourceARB(shader, program->size(), (const char**)&(*program)[0], NULL); 146 /// FIXME do it back 147 // glShaderSourceARB(shader, program->size(), (const std::string&)&(*program)[0], NULL); 149 148 glCompileShaderARB(shader); 150 149 // checking on error. … … 160 159 } 161 160 162 char* Shader::fileRead(const char*fileName)161 char* Shader::fileRead(const std::string& fileName) 163 162 { 164 163 FILE* fileHandle; … … 167 166 int count = 0; 168 167 169 if (fileName == NULL)168 if (fileName.empty()) 170 169 return NULL; 171 170 172 fileHandle = fopen(fileName , "rt");171 fileHandle = fopen(fileName.c_str(), "rt"); 173 172 174 173 if (fileHandle == NULL) … … 187 186 188 187 189 std::vector<char*>* Shader::fileReadArray(const char*fileName)188 std::vector<char*>* Shader::fileReadArray(const std::string& fileName) 190 189 { 191 190 FILE* stream; //< The stream we use to read the file. 192 191 193 if( (stream = fopen (fileName , "rt")) == NULL)194 { 195 PRINTF(1)("Shader could not open %s\n", fileName );192 if( (stream = fopen (fileName.c_str(), "rt")) == NULL) 193 { 194 PRINTF(1)("Shader could not open %s\n", fileName.c_str()); 196 195 return NULL; 197 196 } … … 234 233 if (type == SHADER_VERTEX && this->vertexShader != 0) 235 234 { 236 delete[] this->vertexShaderFile; 237 this->vertexShaderFile = NULL; 235 this->vertexShaderFile = ""; 238 236 glDetachObjectARB(this->shaderProgram, this->vertexShader); 239 237 glDeleteObjectARB(this->vertexShader); … … 245 243 else if (type == SHADER_FRAGMENT && this->fragmentShader != 0) 246 244 { 247 delete[] this->fragmentShaderFile; 248 this->fragmentShaderFile = NULL; 245 this->fragmentShaderFile = ""; 249 246 glDetachObjectARB(this->shaderProgram, this->fragmentShader); 250 247 glDeleteObjectARB(this->fragmentShader);
Note: See TracChangeset
for help on using the changeset viewer.