Hierarchical Edge Bundle 1.0
|
00001 #pragma once 00002 #include <glew.h> 00003 #include <windows.h> 00004 #include <stdlib.h> 00005 #include <io.h> 00006 #include <stdio.h> 00007 00008 00010 00015 class AbstractShader 00016 { 00017 public: 00023 char* textFileRead(char *fn) 00024 { 00025 FILE *fp; 00026 char *content = NULL; 00027 int count=0; 00028 00029 if (fn != NULL) 00030 { 00031 fopen_s(&fp, fn,"rb"); 00032 if (fp != NULL) 00033 { 00034 fseek(fp, 0, SEEK_END); 00035 count = ftell(fp); 00036 rewind(fp); 00037 00038 if (count > 0) 00039 { 00040 content = (char *)malloc(sizeof(char) * (count+1)); 00041 count = fread(content,sizeof(char),count,fp); 00042 content[count] = '\0'; 00043 } 00044 fclose(fp); 00045 } 00046 } 00047 return content; 00048 }; 00049 00056 GLhandleARB loadShader(const char* filename, unsigned int type) 00057 { 00058 FILE *pfile; 00059 GLhandleARB handle; 00060 const GLcharARB* files[1]; 00061 GLint result; 00062 GLint errorLoglength ; 00063 char* errorLogText; 00064 GLsizei actualErrorLogLength; 00065 char buffer[400000]; 00066 memset(buffer,0,400000); 00067 00068 //pfile = fopen(filename, "rb"); 00069 fopen_s(&pfile, filename,"rb"); 00070 if(!pfile) 00071 { 00072 printf("Shader konnte nicht geƶffnet werden '%s'.\n", filename); 00073 //exit(0); 00074 } 00075 00076 fread(buffer,sizeof(char),400000,pfile); 00077 fclose(pfile); 00078 00079 handle = glCreateShaderObjectARB(type); 00080 if (!handle) 00081 { 00082 printf("Shader konte nicht erstellt werden: %s.",filename); 00083 //exit(0); 00084 } 00085 00086 files[0] = (const GLcharARB*)buffer; 00087 glShaderSourceARB(handle, 1, files, NULL); 00088 glCompileShaderARB(handle); 00089 glGetObjectParameterivARB(handle, GL_OBJECT_COMPILE_STATUS_ARB, &result); 00090 00091 if (!result) 00092 { 00093 printf("Shader '%s' konnte nicht kompeliert werden.\n",filename); 00094 glGetObjectParameterivARB(handle, GL_OBJECT_INFO_LOG_LENGTH_ARB, &errorLoglength); 00095 errorLogText = (char*) malloc(sizeof(char) *errorLoglength); 00096 glGetInfoLogARB(handle, errorLoglength, &actualErrorLogLength, errorLogText); 00097 printf("%s\n",errorLogText); 00098 free(errorLogText); 00099 } 00100 return handle; 00101 }; 00102 };