UniShader
1.0.0a
Interface for GPGPU and working with shader programs
|
00001 #pragma once 00002 #ifndef TEXTURE_BUFFER_H 00003 #define TEXTURE_BUFFER_H 00004 00005 #include <UniShader/Config.h> 00006 #include <UniShader/Utility.h> 00007 #include <UniShader/ObjectBase.h> 00008 #include <UniShader/Signal.h> 00009 #include <UniShader/Buffer.h> 00010 #include <UniShader/TextureUnit.h> 00011 #include <UniShader/GLSLType.h> 00012 00013 #include <memory> 00014 #include <string> 00015 #include <deque> 00016 00017 UNISHADER_BEGIN 00018 00020 00031 class UniShader_API TextureBuffer : public SignalSender, public ObjectBase{ 00032 private: 00033 TextureBuffer(); 00034 public: 00035 typedef std::shared_ptr<TextureBuffer> Ptr; 00036 typedef std::shared_ptr<const TextureBuffer> PtrConst; 00037 virtual const std::string& getClassName() const; 00038 ~TextureBuffer(); 00039 00041 00044 class DataType{ 00045 public: 00046 enum myEnum{NONE, 00047 CHAR, 00048 UNSIGNED_CHAR, 00049 SHORT, 00050 UNSIGNED_SHORT, 00051 HALF_FLOAT, 00052 INT, 00053 UNSIGNED_INT, 00054 FLOAT 00055 }; 00056 private: 00057 myEnum m_en; 00058 public: 00059 DataType(){} 00060 DataType(const DataType& ref):m_en(ref.m_en){} 00061 DataType(myEnum en){ m_en = en; } 00062 DataType& operator =(myEnum en){ m_en = en; return *this; } 00063 operator myEnum(){ return m_en; } 00064 }; 00065 00066 00068 00071 static Ptr create(); 00072 00074 00080 void connectBuffer(BufferBase::Ptr buffer, unsigned char componentsNumber, DataType dataType); 00081 00083 00086 void disconnectBuffer(); 00087 00089 00092 unsigned char getComponentsNumber() const; 00093 00095 00098 DataType getDataType() const; 00099 00101 00105 char getTextureUnitIndex() const; 00106 00108 00111 void setComponentsNumber(unsigned char componentsNumber); 00112 00114 00117 void setDataType(DataType dataType); 00118 00120 00124 bool prepare(); 00125 00127 00131 void activate(); 00132 00134 00138 void deactivate(); 00139 private: 00140 TextureUnit m_unit; 00141 BufferBase::Ptr m_buffer; 00142 DataType m_dataType; 00143 unsigned int m_texture; 00144 unsigned int m_activeCount; 00145 unsigned char m_componentsNumber; 00146 bool m_prepared; 00147 }; 00148 00149 UNISHADER_END 00150 00151 #endif