vertexbuf.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:1k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // vertexbuf.h
  2. //
  3. // Copyright (C) 2001, Chris Laurel
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #ifndef _VERTEXBUF_H_
  10. #define _VERTEXBUF_H_
  11. #include <celutil/basictypes.h>
  12. #include <celutil/color.h>
  13. #include <celmath/vecmath.h>
  14. #include <celmath/aabox.h>
  15. class VertexBuffer
  16. {
  17.  public:
  18.     enum {
  19.         VertexNormal   = 0x01,
  20.         VertexColor    = 0x02,
  21.         VertexColor0   = 0x02,
  22.         VertexColor1   = 0x04,
  23.         TexCoord0      = 0x08,
  24.         TexCoord1      = 0x10,
  25.     };
  26.     class Vertex
  27.     {
  28.     public:
  29.         Point3f point;
  30.         Vec3f normal;
  31.         Color color;
  32.         Point2f texCoords[2];
  33.     };
  34.     union VertexPart
  35.     {
  36.         float f;
  37.         unsigned char c[4];
  38.     };
  39.  public:
  40.     VertexList(uint32 _parts, uint32 initialVertexPoolSize = 0);
  41.     ~VertexList();
  42.     void addVertex(const Vertex& v);
  43.     Color getDiffuseColor() const;
  44.     void setDiffuseColor(Color);
  45.     void render();
  46.     AxisAlignedBox getBoundingBox() const;
  47.     void transform(Vec3f translation, float scale);
  48.  private:
  49.     uint32 parts;
  50.     uint32 vertexSize;
  51.     uint32 nVertices;
  52.     uint32 maxVertices;
  53.     VertexPart* vertices;
  54.     Color diffuseColor;
  55.     AxisAlignedBox bbox;
  56. };
  57. #endif // _VERTEXBUF_H_