00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __SHADERPART_H__
00030 #define __SHADERPART_H__
00031
00032 #include "X3DNode.h"
00033 #include "X3DUrlObject.h"
00034 #include <GL/glew.h>
00035 #include "SFString.h"
00036
00037 namespace H3D {
00038
00055 class H3DAPI_API ShaderPart :
00056 public X3DNode,
00057 public X3DUrlObject {
00058 public:
00060 class H3DAPI_API SFShaderString:
00061 public TypedField< SFString,
00062 MFString > {
00063 protected:
00064 virtual void update();
00065 };
00066
00068 ShaderPart( Inst< SFNode > _metadata = 0,
00069 Inst< MFString > _url = 0,
00070 Inst< SFString > _type = 0,
00071 Inst< SFShaderString > _shader_string = 0);
00072
00076 virtual GLhandleARB compileShader();
00077
00080 inline GLhandleARB getShaderHandle() {
00081 return shader_handle;
00082 }
00083
00090 auto_ptr< SFString > type;
00091
00096 auto_ptr< SFShaderString > shaderString;
00097
00100 virtual string defaultXMLContainerField() {
00101 return "parts";
00102 }
00103
00107 virtual X3DUrlObject::LoadStatus loadStatus();
00108
00110 static H3DNodeDatabase database;
00111
00112 protected:
00114 GLhandleARB shader_handle;
00115 };
00116 }
00117
00118 #endif