14#ifndef OSG_TRIANGLEFUNCTOR
15#define OSG_TRIANGLEFUNCTOR 1
52 notify(
WARN)<<
"Triangle Functor does not support Vec2* vertex arrays"<<std::endl;
63 notify(
WARN)<<
"Triangle Functor does not support Vec4* vertex arrays"<<std::endl;
68 notify(
WARN)<<
"Triangle Functor does not support Vec2d* vertex arrays"<<std::endl;
73 notify(
WARN)<<
"Triangle Functor does not support Vec3d* vertex arrays"<<std::endl;
78 notify(
WARN)<<
"Triangle Functor does not support Vec4d* vertex arrays"<<std::endl;
81 virtual void drawArrays(GLenum mode,GLint first,GLsizei count)
91 this->
operator()(*(vptr),*(vptr+1),*(vptr+2));
94 case(GL_TRIANGLE_STRIP):
97 for(GLsizei i=2;i<count;++i,++vptr)
99 if ((i%2)) this->
operator()(*(vptr),*(vptr+2),*(vptr+1));
100 else this->operator()(*(vptr),*(vptr+1),*(vptr+2));
107 for(GLsizei i=3;i<count;i+=4,vptr+=4)
109 this->operator()(*(vptr),*(vptr+1),*(vptr+2));
110 this->operator()(*(vptr),*(vptr+2),*(vptr+3));
117 for(GLsizei i=3;i<count;i+=2,vptr+=2)
119 this->operator()(*(vptr),*(vptr+1),*(vptr+2));
120 this->operator()(*(vptr+1),*(vptr+3),*(vptr+2));
125 case(GL_TRIANGLE_FAN):
128 const Vec3* vptr = vfirst+1;
129 for(GLsizei i=2;i<count;++i,++vptr)
131 this->operator()(*(vfirst),*(vptr),*(vptr+1));
145 virtual void drawElements(GLenum mode,GLsizei count,
const GLubyte* indices)
147 if (indices==0 || count==0)
return;
149 typedef const GLubyte* IndexPointer;
155 IndexPointer ilast = &indices[count];
156 for(IndexPointer iptr=indices;iptr<ilast;iptr+=3)
160 case(GL_TRIANGLE_STRIP):
162 IndexPointer iptr = indices;
163 for(GLsizei i=2;i<count;++i,++iptr)
172 IndexPointer iptr = indices;
173 for(GLsizei i=3;i<count;i+=4,iptr+=4)
182 IndexPointer iptr = indices;
183 for(GLsizei i=3;i<count;i+=2,iptr+=2)
191 case(GL_TRIANGLE_FAN):
193 IndexPointer iptr = indices;
196 for(GLsizei i=2;i<count;++i,++iptr)
212 virtual void drawElements(GLenum mode,GLsizei count,
const GLushort* indices)
214 if (indices==0 || count==0)
return;
216 typedef const GLushort* IndexPointer;
222 IndexPointer ilast = &indices[count];
223 for(IndexPointer iptr=indices;iptr<ilast;iptr+=3)
229 case(GL_TRIANGLE_STRIP):
231 IndexPointer iptr = indices;
232 for(GLsizei i=2;i<count;++i,++iptr)
241 IndexPointer iptr = indices;
242 for(GLsizei i=3;i<count;i+=4,iptr+=4)
251 IndexPointer iptr = indices;
252 for(GLsizei i=3;i<count;i+=2,iptr+=2)
260 case(GL_TRIANGLE_FAN):
262 IndexPointer iptr = indices;
265 for(GLsizei i=2;i<count;++i,++iptr)
281 virtual void drawElements(GLenum mode,GLsizei count,
const GLuint* indices)
283 if (indices==0 || count==0)
return;
285 typedef const GLuint* IndexPointer;
291 IndexPointer ilast = &indices[count];
292 for(IndexPointer iptr=indices;iptr<ilast;iptr+=3)
296 case(GL_TRIANGLE_STRIP):
298 IndexPointer iptr = indices;
299 for(GLsizei i=2;i<count;++i,++iptr)
308 IndexPointer iptr = indices;
309 for(GLsizei i=3;i<count;i+=4,iptr+=4)
318 IndexPointer iptr = indices;
319 for(GLsizei i=3;i<count;i+=2,iptr+=2)
327 case(GL_TRIANGLE_FAN):
329 IndexPointer iptr = indices;
332 for(GLsizei i=2;i<count;++i,++iptr)
Definition PrimitiveSet:54
Definition TriangleFunctor:39
virtual void setVertexArray(unsigned int, const Vec3d *)
Definition TriangleFunctor:71
unsigned int _vertexArraySize
Definition TriangleFunctor:351
const Vec3 * _vertexArrayPtr
Definition TriangleFunctor:352
virtual void setVertexArray(unsigned int count, const Vec3 *vertices)
Definition TriangleFunctor:55
virtual void drawElements(GLenum mode, GLsizei count, const GLuint *indices)
Mimics the OpenGL glDrawElements() function.
Definition TriangleFunctor:281
virtual ~TriangleFunctor()
Definition TriangleFunctor:48
virtual void drawArrays(GLenum mode, GLint first, GLsizei count)
Mimics the OpenGL glDrawArrays() function.
Definition TriangleFunctor:81
TriangleFunctor()
Definition TriangleFunctor:42
virtual void setVertexArray(unsigned int, const Vec2 *)
Definition TriangleFunctor:50
virtual void drawElements(GLenum mode, GLsizei count, const GLushort *indices)
Mimics the OpenGL glDrawElements() function.
Definition TriangleFunctor:212
virtual void setVertexArray(unsigned int, const Vec4 *)
Definition TriangleFunctor:61
virtual void setVertexArray(unsigned int, const Vec4d *)
Definition TriangleFunctor:76
virtual void drawElements(GLenum mode, GLsizei count, const GLubyte *indices)
Mimics the OpenGL glDrawElements() function.
Definition TriangleFunctor:145
virtual void setVertexArray(unsigned int, const Vec2d *)
Definition TriangleFunctor:66
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
@ WARN
Definition Notify:33
std::ostream & notify(void)
Definition Notify:80