00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00023
00024 #ifndef SPK_IRRPOINTRENDERER
00025 #define SPK_IRRPOINTRENDERER
00026
00027 #include "RenderingAPIs/Irrlicht/SPK_IRRRenderer.h"
00028 #include "Extensions/Renderers/SPK_PointRendererInterface.h"
00029
00030 namespace SPK
00031 {
00032 namespace IRR
00033 {
00060 class SPK_IRR_PREFIX IRRPointRenderer : public IRRRenderer,public PointRendererInterface
00061 {
00062 SPK_IMPLEMENT_REGISTERABLE(IRRPointRenderer)
00063
00064 public :
00065
00067
00069
00075 IRRPointRenderer(irr::IrrlichtDevice* d,float size = 1.0f);
00076
00083 static IRRPointRenderer* create(irr::IrrlichtDevice* d,float size = 1.0f);
00084
00086
00088
00096 void setTexture(irr::video::ITexture* texture);
00097
00098
00099 virtual bool setType(PointType type);
00100 virtual void setSize(float size);
00101
00103
00105
00110 irr::video::ITexture* getTexture() const;
00111
00116 irr::video::SMaterialLayer& getMaterialLayer();
00117
00122 const irr::video::SMaterialLayer& getMaterialLayer() const;
00123
00125
00127
00128 virtual void render(const Group& group);
00129
00130 void createBuffers(const Group& group);
00131
00132 private :
00133
00134 static const size_t NB_INDICES_PER_QUAD = 2;
00135 static const size_t NB_VERTICES_PER_QUAD = 2;
00136
00137
00138 static const std::string IRR_BUFFER_NAME;
00139
00140 virtual const std::string& getBufferName() const;
00141 virtual int getBufferPurpose() const;
00142 };
00143
00144
00145 inline IRRPointRenderer* IRRPointRenderer::create(irr::IrrlichtDevice* d,float size)
00146 {
00147 IRRPointRenderer* obj = new IRRPointRenderer(d,size);
00148 registerObject(obj);
00149 return obj;
00150 }
00151
00152 inline void IRRPointRenderer::setTexture(irr::video::ITexture* texture)
00153 {
00154 material.TextureLayer[0].Texture = texture;
00155 }
00156
00157 inline void IRRPointRenderer::setSize(float size)
00158 {
00159 material.Thickness = this->size = size;
00160 }
00161
00162 inline irr::video::ITexture* IRRPointRenderer::getTexture() const
00163 {
00164 return material.TextureLayer[0].Texture;
00165 }
00166
00167 inline irr::video::SMaterialLayer& IRRPointRenderer::getMaterialLayer()
00168 {
00169 return material.TextureLayer[0];
00170 }
00171
00172 inline const irr::video::SMaterialLayer& IRRPointRenderer::getMaterialLayer() const
00173 {
00174 return material.TextureLayer[0];
00175 }
00176
00177 inline const std::string& IRRPointRenderer::getBufferName() const
00178 {
00179 return IRR_BUFFER_NAME;
00180 }
00181
00182 inline int IRRPointRenderer::getBufferPurpose() const
00183 {
00184 return 0;
00185 }
00186 }}
00187
00188 #endif