Hierarchical Edge Bundle 1.0
J:/Caro/C++_Coding/HierarchicalEdgeBundle/HierarchicalEdgeBundle/header/AbstractShader.h
Go to the documentation of this file.
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 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Defines