/* Returns the size in bytes of the shader fileName.
If an error occurred, it returns -1 */
int Shader::ShaderSize(char * fName) const
{
int count, shader;
char name[100];
strcpy(name, fName);
/* Open the file */
shader = _open(name, _O_RDONLY);
if (shader == -1)
return -1;
/* Seek to the end and find its position */
count = _lseek(shader, 0, SEEK_END);
_close(shader);
return count;
}
bool Shader::ReadShaderSource(char * fName, GLcharARB * & shader) const
{
int size;
size = ShaderSize(fName);
if(size == -1)
{
cerr << "Cannot determine size of the shader " << fName << endl;
return false;
}
shader = new GLcharARB[size];
ifstream inf;
inf.open(fName, ios::in);
if(!inf.is_open())
{
cerr << "Could not open shader file " << fName << endl;
return false;
}
inf.read(shader, size);
inf.close();
shader[size] = '\0';
return true;
}