58 #ifndef ACG_GLPRIMITIVES_HH
59 #define ACG_GLPRIMITIVES_HH
65 #include <ACG/Config/ACGDefines.hh>
66 #include <ACG/GL/GLState.hh>
67 #include <ACG/Math/VectorT.hh>
68 #include <ACG/GL/VertexDeclaration.hh>
85 void draw_primitive();
101 virtual int getNumTriangles() = 0;
102 virtual int getNumLines() {
return 0;}
105 unsigned int getVBO();
109 enum NormalOrientation {OUTSIDE, INSIDE};
114 virtual void updateVBO() = 0;
125 bool vboDataInvalid_;
127 NormalOrientation normalOrientation_;
131 void updateVBOData();
155 int getNumTriangles();
161 void addTriangle(
int sl0,
int st0,
int sl1,
int st1,
int sl2,
int st2);
163 ACG::Vec3f positionOnSphere(
int _sliceNumber,
int _stackNumber);
164 ACG::Vec2f texCoordOnSphere(
int _sliceNumber,
int _stackNumber);
178 GLCone(
int _slices,
int _stacks,
float _bottomRadius,
float _topRadius,
bool _bottomCap_,
bool _topCap);
192 float _radiusScale = 1.0f);
194 int getNumTriangles();
197 void setBottomRadius(
float _bottomRadius);
198 void setTopRadius(
float _topRadius);
199 void setNormalOrientation(NormalOrientation orienation);
203 void addTriangle(
int sl0,
int st0,
int sl1,
int st1,
int sl2,
int st2);
205 ACG::Vec3f positionOnCone(
int _sliceNumber,
int _stackNumber);
206 ACG::Vec2f texCoordOnCone(
int _sliceNumber,
int _stackNumber);
207 ACG::Vec3f normalOnCone(
int _sliceNumber,
int _stackNumber);
226 GLCylinder(
int _slices,
int _stacks,
float _radius,
bool _bottomCap,
bool _topCap);
233 GLPartialDisk(
int _slices,
int _loops,
float _innerRadius,
float _outerRadius,
float _startAngle,
float _sweepAngle);
235 void setInnerRadius(
float _innerRadius);
236 void setOuterRadius(
float _outerRadius);
237 int getNumTriangles();
260 GLDisk(
int _slices,
int _loops,
float _innerRadius,
float _outerRadius);
272 int getNumTriangles();
288 int getNumTriangles();
301 #endif // ACG_GLPRIMITIVES_HH defined
Namespace providing different geometric functions concerning angles.
Class to define the vertex input layout.
Interface class between scenegraph and renderer.