00001 00002 // File: ProgramGPU.h 00003 // Author: Changchang Wu 00004 // Description : Based class for GPU programs 00005 // ProgramGPU: base class of ProgramGLSL 00006 // FilterProgram: base class of FilterGLSL, FilterPKSL 00007 // 00008 // Copyright (c) 2007 University of North Carolina at Chapel Hill 00009 // All Rights Reserved 00010 // 00011 // Permission to use, copy, modify and distribute this software and its 00012 // documentation for educational, research and non-profit purposes, without 00013 // fee, and without a written agreement is hereby granted, provided that the 00014 // above copyright notice and the following paragraph appear in all copies. 00015 // 00016 // The University of North Carolina at Chapel Hill make no representations 00017 // about the suitability of this software for any purpose. It is provided 00018 // 'as is' without express or implied warranty. 00019 // 00020 // Please send BUG REPORTS to ccwu@cs.unc.edu 00021 // 00023 00024 00025 #ifndef _PROGRAM_GPU_H 00026 #define _PROGRAM_GPU_H 00027 00029 //class ProgramGPU 00030 //description: pure virtual class 00031 // provides a common interface for shader programs 00033 class ProgramGPU 00034 { 00035 public: 00036 //use a gpu program 00037 virtual int UseProgram() = 0; 00038 virtual void* GetProgramID() = 0; 00039 //not used 00040 virtual ~ProgramGPU(){}; 00041 }; 00042 00044 //class FilterProgram 00046 class FilterProgram 00047 { 00048 public: 00049 ProgramGPU* s_shader_h; 00050 ProgramGPU* s_shader_v; 00051 int _size; 00052 int _id; 00053 public: 00054 FilterProgram() { s_shader_h = s_shader_v = NULL; _size = _id = 0; } 00055 virtual ~FilterProgram() { if(s_shader_h) delete s_shader_h; if(s_shader_v) delete s_shader_v;} 00056 }; 00057 00058 #endif 00059