00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00025 00026 #ifndef _OPENGL_GPU_SHADER_H_ 00027 #define _OPENGL_GPU_SHADER_H_ 00028 00029 #include "GL\glew.h" 00030 #include <string> 00031 00032 namespace GpuQuadraticCurveRender 00033 { 00034 00035 enum GpuShaderStage 00036 { 00037 Vertex, 00038 Pixel 00039 }; 00040 00042 class OpenglGpuShader 00043 { 00044 public: 00048 OpenglGpuShader(const std::wstring& shaderFile, GpuShaderStage stage); 00049 00051 ~OpenglGpuShader(void); 00052 00055 GLint GetGlShaderId(void) const; 00056 00057 protected: 00059 GLint m_glShader; 00060 00064 GLint LoadShaderFromFile(const std::wstring& shaderFile, GpuShaderStage stage); 00065 00069 void ReadSourceFile(const std::wstring& shaderFile, std::string& source); 00070 00072 OpenglGpuShader(const OpenglGpuShader& shader); 00073 00075 OpenglGpuShader& operator=(const OpenglGpuShader& shader); 00076 }; 00077 00078 } 00079 00080 #endif