00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef __LIBGPU_SRC_H__
00027 #define __LIBGPU_SRC_H__
00028
00029 #include "glstuff.h"
00030 #include "cgstuff.h"
00031
00032 #include "gpu.h"
00033
00034 #include "parameter.h"
00035 class Parameter;
00036
00037 #include <string>
00038 #include <iostream>
00039 #include <fstream>
00040
00041 typedef enum {
00042 FRAGMENT_PROGRAM,
00043 VERTEX_PROGRAM
00044 } programType;
00045
00048 class Program {
00049 friend class Kernel;
00050 friend class FragmentProgram;
00051 friend class VertexProgram;
00052 public:
00057 Parameter* getParam(char* name);
00058
00059 private:
00060 Program(programType type, char* prgstr);
00061 Program(programType type, char* file, char* function);
00062 ~Program();
00063
00064 void activate();
00065
00066 void addMacros();
00067 void createProgram();
00068 void initParams();
00069
00070 CGprofile profile;
00071 CGprogram id;
00072
00073 std::string *src;
00074 std::string *main;
00075
00076 Gpu *gpu;
00077
00078 unsigned int numParams;
00079 Parameter** params;
00080 };
00081
00082 #endif