00001 #pragma once
00002
00003 #include <windows.h>
00004 #include <commdlg.h>
00005 #include <stdlib.h>
00006 #include <io.h>
00007 #include <glew.h>
00008 #include <GL/glu.h>
00009 #include <iostream>
00010 #include <sstream>
00011 #include <string>
00012 #include "FlowChannel.h"
00013
00014
00015 #include <windows.h>
00016 #include <stdlib.h>
00017 #include <io.h>
00018 #include <glew.h>
00019
00020
00022
00027 class AbstractShader
00028 {
00029 public:
00035 char* textFileRead(char *fn)
00036 {
00037 FILE *fp;
00038 char *content = NULL;
00039 int count=0;
00040
00041 if (fn != NULL)
00042 {
00043 fp = fopen(fn,"rt");
00044 if (fp != NULL)
00045 {
00046 fseek(fp, 0, SEEK_END);
00047 count = ftell(fp);
00048 rewind(fp);
00049
00050 if (count > 0)
00051 {
00052 content = (char *)malloc(sizeof(char) * (count+1));
00053 count = fread(content,sizeof(char),count,fp);
00054 content[count] = '\0';
00055 }
00056 fclose(fp);
00057 }
00058 }
00059 return content;
00060 };
00061
00068 GLhandleARB loadShader(const char* filename, unsigned int type)
00069 {
00070 FILE *pfile;
00071 GLhandleARB handle;
00072 const GLcharARB* files[1];
00073 GLint result;
00074 GLint errorLoglength ;
00075 char* errorLogText;
00076 GLsizei actualErrorLogLength;
00077 char buffer[400000];
00078 memset(buffer,0,400000);
00079
00080 pfile = fopen(filename, "rb");
00081 if(!pfile)
00082 {
00083 printf("Shader konnte nicht geöffnet werden '%s'.\n", filename);
00084
00085 }
00086
00087 fread(buffer,sizeof(char),400000,pfile);
00088 fclose(pfile);
00089
00090 handle = glCreateShaderObjectARB(type);
00091 if (!handle)
00092 {
00093 printf("Shader konte nicht erstellt werden: %s.",filename);
00094
00095 }
00096
00097 files[0] = (const GLcharARB*)buffer;
00098 glShaderSourceARB(handle, 1, files, NULL);
00099 glCompileShaderARB(handle);
00100 glGetObjectParameterivARB(handle, GL_OBJECT_COMPILE_STATUS_ARB, &result);
00101
00102 if (!result)
00103 {
00104 printf("Shader '%s' konnte nicht kompeliert werden.\n",filename);
00105 glGetObjectParameterivARB(handle, GL_OBJECT_INFO_LOG_LENGTH_ARB, &errorLoglength);
00106 errorLogText = (char*) malloc(sizeof(char) *errorLoglength);
00107 glGetInfoLogARB(handle, errorLoglength, &actualErrorLogLength, errorLogText);
00108 printf("%s\n",errorLogText);
00109 free(errorLogText);
00110 }
00111 return handle;
00112 };
00113 };