Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5318 in orxonox.OLD for trunk/src/lib/graphics/shader.cc


Ignore:
Timestamp:
Oct 8, 2005, 1:08:09 PM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: new ReadFileArray function for shader

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/graphics/shader.cc

    r5317 r5318  
    2222#include <stdio.h>
    2323#include "debug.h"
     24#include "array.h"
    2425
    2526
     
    6667/**
    6768 * standard deconstructor
    68 */
     69 */
    6970Shader::~Shader ()
    7071{
     72  if (storedShader == this)
     73    Shader::deactivateShader();
     74
    7175  // delete what has to be deleted here
    7276  this->deleteProgram(SHADER_VERTEX);
     
    7983  if (this->shaderProgram != 0)
    8084    glDeleteObjectARB(this->shaderProgram);
     85
    8186}
    8287
     
    9398
    9499
    95   const char* program = fileRead(fileName);
     100  Array<char*>* program = fileReadArray(fileName);
    96101  if (program == NULL)
    97102    return false;
     103
    98104  if (type == SHADER_VERTEX && GLEW_ARB_vertex_shader)
    99105  {
     
    114120  if (shader != 0)
    115121    {
    116       glShaderSourceARB(shader, 1, (const GLcharARB**)&program, NULL);
    117       try {
     122      glShaderSourceARB(shader, program->getCount(), (const GLcharARB**)program->getArray(), NULL);
    118123        glCompileShaderARB(shader);
    119       }
    120       catch (...)
    121         {
    122124          this->printError(shader);
    123         }
    124125      glAttachObjectARB(this->shaderProgram, shader);
    125       delete[] program;
    126126    }
     127    delete program;
    127128}
    128129
     
    153154}
    154155
     156
     157Array<char*>* Shader::fileReadArray(const char* fileName)
     158{
     159  FILE*    stream;           //< The stream we use to read the file.
     160
     161  if( (stream = fopen (fileName, "rt")) == NULL)
     162  {
     163    PRINTF(1)("Shader could not open %s\n", fileName);
     164    return NULL;
     165  }
     166  Array<char*>* file = new Array<char*>;
     167
     168  char lineBuffer[PARSELINELENGHT];
     169  char* addString;
     170  while(fgets (lineBuffer, PARSELINELENGHT, stream) != NULL)
     171  {
     172    addString = new char[strlen(lineBuffer)+1];
     173    strcpy(addString, lineBuffer);
     174    file->addEntry(addString);
     175  }
     176  fclose(stream);
     177  file->finalizeArray();
     178  return file;
     179}
     180
     181
     182
    155183void Shader::activateShader()
    156184{
Note: See TracChangeset for help on using the changeset viewer.