topical media & game development

talk show tell print

lib-game-delta3d-sdk-examples-testBumpMap-cubevertices.h / h



  /* -*-c++-*-
   * testBumpMap - cubevertices (.h & .cpp) - Using 'The MIT License'
   *
   * Permission is hereby granted, free of charge, to any person obtaining a copy
   * of this software and associated documentation files (the "Software"), to deal
   * in the Software without restriction, including without limitation the rights
   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
   * copies of the Software, and to permit persons to whom the Software is
   * furnished to do so, subject to the following conditions:
   *
   * The above copyright notice and this permission notice shall be included in
   * all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
   * THE SOFTWARE.
   */
  
  ifndef __CUBE_VERTICES_H__
  define __CUBE_VERTICES_H__
  
  include <osg/ref_ptr>
  include <osg/Vec2>
  include <osg/Vec3>
  
  /*
     Cube Vertices
  
     DESC: This data structure encapsulates the data required to generate
              tangent space on the GPU for one cube
  
     NOTE: Each vertex has a normal, 3 verts, and 3 texture coordinates
              where the two additional verts and tex coords are from the
              opposite and adjacent vertices and the standard triangle.
  
           As a side note, one may notice this data to be very repetitive.
              And although I could have done this by offsetting indices and
              modding them to wrap back around, I decided to list them by hand
              for the sake of the demo.  This will show better what is happening
              to the user. In practice I recommend just offsetting the indices of
              the original vert and tex coord list.
  
  */
  
  typedef struct _CV_
  {
  
  public:
  
     _CV_();
  
      osg::ref_ptr<osg::Vec3Array> mVerts;
      osg::ref_ptr<osg::Vec3Array> mVerts2;
      osg::ref_ptr<osg::Vec3Array> mVerts3;
  
      osg::ref_ptr<osg::Vec3Array> mNormals;
  
      osg::ref_ptr<osg::Vec2Array> mTexCoords;
      osg::ref_ptr<osg::Vec2Array> mTexCoords2;
      osg::ref_ptr<osg::Vec2Array> mTexCoords3;
  
      float mTexRepeat;
      float mSize;
  
  } CubeVertices;
  
  
////////////////////////////////////////////////////////////////////

//Control Variables
////////////////////////////////////////////////////////////////////

_CV_::_CV_() { mTexRepeat = 1.0f; mSize = 1000.0f; mVerts = new osg::Vec3Array(36); mVerts2 = new osg::Vec3Array(36); mVerts3 = new osg::Vec3Array(36); mNormals = new osg::Vec3Array(36); mTexCoords = new osg::Vec2Array(36); mTexCoords2 = new osg::Vec2Array(36); mTexCoords3 = new osg::Vec2Array(36);
////////////////////////////////////////////////////////////////////

//Verts 1
////////////////////////////////////////////////////////////////////

//bottom (*mVerts)[0].set(mSize, mSize, -mSize); (*mVerts)[1].set(-mSize, mSize, -mSize); (*mVerts)[2].set(-mSize, -mSize, -mSize); (*mVerts)[3].set (mSize, -mSize, -mSize); (*mVerts)[4].set (mSize, mSize, -mSize); (*mVerts)[5].set (-mSize, -mSize, -mSize); //top (*mVerts)[6].set (-mSize, mSize, mSize); (*mVerts)[7].set (mSize, mSize, mSize); (*mVerts)[8].set (-mSize, -mSize, mSize); (*mVerts)[9].set (mSize, mSize, mSize); (*mVerts)[10].set (mSize, -mSize, mSize); (*mVerts)[11].set (-mSize, -mSize, mSize); //left (*mVerts)[12].set (-mSize, mSize, -mSize); (*mVerts)[13].set (-mSize, mSize, mSize); (*mVerts)[14].set (-mSize, -mSize, mSize); (*mVerts)[15].set (-mSize, -mSize, -mSize); (*mVerts)[16].set (-mSize, mSize, -mSize); (*mVerts)[17].set (-mSize, -mSize, mSize); //right (*mVerts)[18].set (mSize, mSize, mSize); (*mVerts)[19].set (mSize, mSize, -mSize); (*mVerts)[20].set (mSize, -mSize, -mSize); (*mVerts)[21].set (mSize, -mSize, mSize); (*mVerts)[22].set (mSize, mSize, mSize); (*mVerts)[23].set (mSize, -mSize, -mSize); //front (*mVerts)[24].set (mSize, mSize, mSize); (*mVerts)[25].set (-mSize, mSize, mSize); (*mVerts)[26].set (-mSize, mSize, -mSize); (*mVerts)[27].set (mSize, mSize, -mSize); (*mVerts)[28].set (mSize, mSize, mSize); (*mVerts)[29].set (-mSize, mSize, -mSize); //back (*mVerts)[30].set (mSize, -mSize, -mSize); (*mVerts)[31].set (-mSize, -mSize, -mSize); (*mVerts)[32].set (-mSize, -mSize, mSize); (*mVerts)[33].set (mSize, -mSize, mSize); (*mVerts)[34].set (mSize, -mSize, -mSize); (*mVerts)[35].set (-mSize, -mSize, mSize);
////////////////////////////////////////////////////////////////////

//Verts 2
////////////////////////////////////////////////////////////////////

//bottom (*mVerts2)[0].set (-mSize, mSize, -mSize); (*mVerts2)[1].set (-mSize, -mSize, -mSize); (*mVerts2)[2].set (mSize, mSize, -mSize); (*mVerts2)[3].set (mSize, mSize, -mSize); (*mVerts2)[4].set (-mSize, -mSize, -mSize); (*mVerts2)[5].set (mSize, -mSize, -mSize); //top (*mVerts2)[6].set (mSize, mSize, mSize); (*mVerts2)[7].set (-mSize, -mSize, mSize); (*mVerts2)[8].set (-mSize, mSize, mSize); (*mVerts2)[9].set (mSize, -mSize, mSize); (*mVerts2)[10].set (-mSize, -mSize, mSize); (*mVerts2)[11].set (mSize, mSize, mSize); //left (*mVerts2)[12].set (-mSize, mSize, mSize); (*mVerts2)[13].set (-mSize, -mSize, mSize); (*mVerts2)[14].set (-mSize, mSize, -mSize); (*mVerts2)[15].set (-mSize, mSize, -mSize); (*mVerts2)[16].set (-mSize, -mSize, mSize); (*mVerts2)[17].set (-mSize, -mSize, -mSize); //right (*mVerts2)[18].set (mSize, mSize, -mSize); (*mVerts2)[19].set (mSize, -mSize, -mSize); (*mVerts2)[20].set (mSize, mSize, mSize); (*mVerts2)[21].set (mSize, mSize, mSize); (*mVerts2)[22].set (mSize, -mSize, -mSize); (*mVerts2)[23].set (mSize, -mSize, mSize); //front (*mVerts2)[24].set (-mSize, mSize, mSize); (*mVerts2)[25].set (-mSize, mSize, -mSize); (*mVerts2)[26].set (mSize, mSize, mSize); (*mVerts2)[27].set (mSize, mSize, mSize); (*mVerts2)[28].set (-mSize, mSize, -mSize); (*mVerts2)[29].set (mSize, mSize, -mSize); //back (*mVerts2)[30].set (-mSize, -mSize, -mSize); (*mVerts2)[31].set (-mSize, -mSize, mSize); (*mVerts2)[32].set (mSize, -mSize, -mSize); (*mVerts2)[33].set (mSize, -mSize, -mSize); (*mVerts2)[34].set (-mSize, -mSize, mSize); (*mVerts2)[35].set (mSize, -mSize, mSize);
////////////////////////////////////////////////////////////////////

//Verts 3
////////////////////////////////////////////////////////////////////

//bottom (*mVerts3)[0].set (-mSize, -mSize, -mSize); (*mVerts3)[1].set (mSize, mSize, -mSize); (*mVerts3)[2].set (-mSize, mSize, -mSize); (*mVerts3)[3].set (-mSize, -mSize, -mSize); (*mVerts3)[4].set (mSize, -mSize, -mSize); (*mVerts3)[5].set (mSize, mSize, -mSize); //top (*mVerts3)[6].set (-mSize, -mSize, mSize); (*mVerts3)[7].set (-mSize, mSize, mSize); (*mVerts3)[8].set (mSize, mSize, mSize); (*mVerts3)[9].set (-mSize, -mSize, mSize); (*mVerts3)[10].set (mSize, mSize, mSize); (*mVerts3)[11].set (mSize, -mSize, mSize); //left (*mVerts3)[12].set (-mSize, -mSize, mSize); (*mVerts3)[13].set (-mSize, mSize, -mSize); (*mVerts3)[14].set (-mSize, mSize, mSize); (*mVerts3)[15].set (-mSize, -mSize, mSize ); (*mVerts3)[16].set (-mSize, -mSize, -mSize); (*mVerts3)[17].set (-mSize, mSize, -mSize); //right (*mVerts3)[18].set (mSize, -mSize, -mSize); (*mVerts3)[19].set (mSize, mSize, mSize); (*mVerts3)[20].set (mSize, mSize, -mSize); (*mVerts3)[21].set (mSize, -mSize, -mSize); (*mVerts3)[22].set (mSize, -mSize, mSize); (*mVerts3)[23].set (mSize, mSize, mSize); //front (*mVerts3)[24].set (-mSize, mSize, -mSize); (*mVerts3)[25].set (mSize, mSize, mSize); (*mVerts3)[26].set (-mSize, mSize, mSize); (*mVerts3)[27].set (-mSize, mSize, -mSize); (*mVerts3)[28].set (mSize, mSize, -mSize ); (*mVerts3)[29].set (mSize, mSize, mSize); //back (*mVerts3)[30].set (-mSize, -mSize, mSize); (*mVerts3)[31].set (mSize, -mSize, -mSize); (*mVerts3)[32].set (-mSize, -mSize, -mSize); (*mVerts3)[33].set (-mSize, -mSize, mSize); (*mVerts3)[34].set (mSize, -mSize, mSize); (*mVerts3)[35].set (mSize, -mSize, -mSize);
////////////////////////////////////////////////////////////////////

//Normals
////////////////////////////////////////////////////////////////////

//bottom (*mNormals)[0].set (0.0f, 0.0f, 1.0f); (*mNormals)[1].set (0.0f, 0.0f, 1.0f); (*mNormals)[2].set (0.0f, 0.0f, 1.0f); (*mNormals)[3].set (0.0f, 0.0f, 1.0f); (*mNormals)[4].set (0.0f, 0.0f, 1.0f); (*mNormals)[5].set (0.0f, 0.0f, 1.0f); //top (*mNormals)[6].set (0.0f, 0.0f, -1.0f); (*mNormals)[7].set (0.0f, 0.0f, -1.0f); (*mNormals)[8].set (0.0f, 0.0f, -1.0f); (*mNormals)[9].set (0.0f, 0.0f, -1.0f); (*mNormals)[10].set (0.0f, 0.0f, -1.0f); (*mNormals)[11].set (0.0f, 0.0f, -1.0f); //left (*mNormals)[12].set (1.0f, 0.0f, 0.0f); (*mNormals)[13].set (1.0f, 0.0f, 0.0f); (*mNormals)[14].set (1.0f, 0.0f, 0.0f); (*mNormals)[15].set (1.0f, 0.0f, 0.0f); (*mNormals)[16].set (1.0f, 0.0f, 0.0f); (*mNormals)[17].set (1.0f, 0.0f, 0.0f); //right (*mNormals)[18].set (-1.0f, 0.0f, 0.0f); (*mNormals)[19].set (-1.0f, 0.0f, 0.0f); (*mNormals)[20].set (-1.0f, 0.0f, 0.0f); (*mNormals)[21].set (-1.0f, 0.0f, 0.0f); (*mNormals)[22].set (-1.0f, 0.0f, 0.0f); (*mNormals)[23].set (-1.0f, 0.0f, 0.0f); //front (*mNormals)[24].set (0.0f, -1.0f, 0.0f); (*mNormals)[25].set (0.0f, -1.0f, 0.0f); (*mNormals)[26].set (0.0f, -1.0f, 0.0f); (*mNormals)[27].set (0.0f, -1.0f, 0.0f); (*mNormals)[28].set (0.0f, -1.0f, 0.0f); (*mNormals)[29].set (0.0f, -1.0f, 0.0f); //back (*mNormals)[30].set (0.0f, 1.0f, 0.0f); (*mNormals)[31].set (0.0f, 1.0f, 0.0f); (*mNormals)[32].set (0.0f, 1.0f, 0.0f); (*mNormals)[33].set (0.0f, 1.0f, 0.0f); (*mNormals)[34].set (0.0f, 1.0f, 0.0f); (*mNormals)[35].set (0.0f, 1.0f, 0.0f);
////////////////////////////////////////////////////////////////////

// Tex Coords1
////////////////////////////////////////////////////////////////////

//bottom (*mTexCoords)[0].set (mTexRepeat, mTexRepeat); (*mTexCoords)[1].set (-mTexRepeat, mTexRepeat); (*mTexCoords)[2].set (-mTexRepeat, -mTexRepeat); (*mTexCoords)[3].set (mTexRepeat, -mTexRepeat); (*mTexCoords)[4].set (mTexRepeat, mTexRepeat); (*mTexCoords)[5].set (-mTexRepeat, -mTexRepeat); //top (*mTexCoords)[6].set (-mTexRepeat, -mTexRepeat); (*mTexCoords)[7].set (mTexRepeat, -mTexRepeat); (*mTexCoords)[8].set (-mTexRepeat, mTexRepeat); (*mTexCoords)[9].set (mTexRepeat, -mTexRepeat); (*mTexCoords)[10].set (mTexRepeat, mTexRepeat); (*mTexCoords)[11].set (-mTexRepeat, mTexRepeat); //left (*mTexCoords)[12].set (mTexRepeat, -mTexRepeat); (*mTexCoords)[13].set (mTexRepeat, mTexRepeat); (*mTexCoords)[14].set (-mTexRepeat, mTexRepeat); (*mTexCoords)[15].set (-mTexRepeat, -mTexRepeat); (*mTexCoords)[16].set (mTexRepeat, -mTexRepeat); (*mTexCoords)[17].set (-mTexRepeat, mTexRepeat); //right (*mTexCoords)[18].set (-mTexRepeat, mTexRepeat); (*mTexCoords)[19].set (-mTexRepeat, -mTexRepeat); (*mTexCoords)[20].set (mTexRepeat, -mTexRepeat); (*mTexCoords)[21].set (mTexRepeat, mTexRepeat); (*mTexCoords)[22].set (-mTexRepeat, mTexRepeat); (*mTexCoords)[23].set (mTexRepeat, -mTexRepeat); //front (*mTexCoords)[24].set (mTexRepeat, mTexRepeat); (*mTexCoords)[25].set (-mTexRepeat, mTexRepeat); (*mTexCoords)[26].set (-mTexRepeat, -mTexRepeat); (*mTexCoords)[27].set (mTexRepeat, -mTexRepeat); (*mTexCoords)[28].set (mTexRepeat, mTexRepeat); (*mTexCoords)[29].set (-mTexRepeat, -mTexRepeat); //back (*mTexCoords)[30].set (-mTexRepeat, -mTexRepeat); (*mTexCoords)[31].set (mTexRepeat, -mTexRepeat); (*mTexCoords)[32].set (mTexRepeat, mTexRepeat); (*mTexCoords)[33].set (-mTexRepeat, mTexRepeat); (*mTexCoords)[34].set (-mTexRepeat, -mTexRepeat); (*mTexCoords)[35].set (mTexRepeat, mTexRepeat);
////////////////////////////////////////////////////////////////////

// TexCoords 2
////////////////////////////////////////////////////////////////////

//bottom (*mTexCoords2)[0].set (-mTexRepeat, mTexRepeat); (*mTexCoords2)[1].set (-mTexRepeat, -mTexRepeat); (*mTexCoords2)[2].set (mTexRepeat, mTexRepeat); (*mTexCoords2)[3].set (mTexRepeat, mTexRepeat); (*mTexCoords2)[4].set (-mTexRepeat, -mTexRepeat); (*mTexCoords2)[5].set (mTexRepeat, -mTexRepeat); //top (*mTexCoords2)[6].set (mTexRepeat, -mTexRepeat); (*mTexCoords2)[7].set (-mTexRepeat, mTexRepeat); (*mTexCoords2)[8].set (-mTexRepeat, -mTexRepeat); (*mTexCoords2)[9].set (mTexRepeat, mTexRepeat); (*mTexCoords2)[10].set (-mTexRepeat, mTexRepeat); (*mTexCoords2)[11].set (mTexRepeat, -mTexRepeat); //left (*mTexCoords2)[12].set (mTexRepeat, mTexRepeat); (*mTexCoords2)[13].set (-mTexRepeat, mTexRepeat); (*mTexCoords2)[14].set (mTexRepeat, -mTexRepeat); (*mTexCoords2)[15].set (mTexRepeat, -mTexRepeat); (*mTexCoords2)[16].set (-mTexRepeat, mTexRepeat); (*mTexCoords2)[17].set (-mTexRepeat, -mTexRepeat); //right (*mTexCoords2)[18].set (-mTexRepeat, -mTexRepeat); (*mTexCoords2)[19].set (mTexRepeat, -mTexRepeat); (*mTexCoords2)[20].set (-mTexRepeat, mTexRepeat); (*mTexCoords2)[21].set (-mTexRepeat, mTexRepeat); (*mTexCoords2)[22].set (mTexRepeat, -mTexRepeat); (*mTexCoords2)[23].set (mTexRepeat, mTexRepeat); //front (*mTexCoords2)[24].set (-mTexRepeat, mTexRepeat); (*mTexCoords2)[25].set (-mTexRepeat, -mTexRepeat); (*mTexCoords2)[26].set (mTexRepeat, mTexRepeat); (*mTexCoords2)[27].set (mTexRepeat, mTexRepeat); (*mTexCoords2)[28].set (-mTexRepeat, -mTexRepeat); (*mTexCoords2)[29].set (mTexRepeat, -mTexRepeat); //back (*mTexCoords2)[30].set (mTexRepeat, -mTexRepeat); (*mTexCoords2)[31].set (mTexRepeat, mTexRepeat); (*mTexCoords2)[32].set (-mTexRepeat, -mTexRepeat); (*mTexCoords2)[33].set (-mTexRepeat, -mTexRepeat); (*mTexCoords2)[34].set (mTexRepeat, mTexRepeat); (*mTexCoords2)[35].set (-mTexRepeat, mTexRepeat);
////////////////////////////////////////////////////////////////////

// Tex Coords 3
////////////////////////////////////////////////////////////////////

//bottom (*mTexCoords3)[0].set (-mTexRepeat, -mTexRepeat); (*mTexCoords3)[1].set (mTexRepeat, mTexRepeat); (*mTexCoords3)[2].set (-mTexRepeat, mTexRepeat); (*mTexCoords3)[3].set (-mTexRepeat, -mTexRepeat); (*mTexCoords3)[4].set (mTexRepeat, -mTexRepeat); (*mTexCoords3)[5].set (mTexRepeat, mTexRepeat); //top (*mTexCoords3)[6].set (-mTexRepeat, mTexRepeat); (*mTexCoords3)[7].set (-mTexRepeat, -mTexRepeat); (*mTexCoords3)[8].set (mTexRepeat, -mTexRepeat); (*mTexCoords3)[9].set (-mTexRepeat, mTexRepeat); (*mTexCoords3)[10].set (mTexRepeat, -mTexRepeat); (*mTexCoords3)[11].set (mTexRepeat, mTexRepeat); //left (*mTexCoords3)[12].set (-mTexRepeat, mTexRepeat); (*mTexCoords3)[13].set (mTexRepeat, -mTexRepeat); (*mTexCoords3)[14].set (mTexRepeat, mTexRepeat); (*mTexCoords3)[15].set (-mTexRepeat, mTexRepeat); (*mTexCoords3)[16].set (-mTexRepeat, -mTexRepeat); (*mTexCoords3)[17].set (mTexRepeat, -mTexRepeat); //right (*mTexCoords3)[18].set (mTexRepeat, -mTexRepeat); (*mTexCoords3)[19].set (-mTexRepeat, mTexRepeat); (*mTexCoords3)[20].set (-mTexRepeat, -mTexRepeat); (*mTexCoords3)[21].set (mTexRepeat, -mTexRepeat); (*mTexCoords3)[22].set (mTexRepeat, mTexRepeat); (*mTexCoords3)[23].set (-mTexRepeat, mTexRepeat); //front (*mTexCoords3)[24].set (-mTexRepeat, -mTexRepeat); (*mTexCoords3)[25].set (mTexRepeat, mTexRepeat); (*mTexCoords3)[26].set (-mTexRepeat, mTexRepeat); (*mTexCoords3)[27].set (-mTexRepeat, -mTexRepeat); (*mTexCoords3)[28].set (mTexRepeat, -mTexRepeat); (*mTexCoords3)[29].set (mTexRepeat, mTexRepeat); //back (*mTexCoords3)[30].set (mTexRepeat, mTexRepeat); (*mTexCoords3)[31].set (-mTexRepeat, -mTexRepeat); (*mTexCoords3)[32].set (mTexRepeat, -mTexRepeat); (*mTexCoords3)[33].set (mTexRepeat, mTexRepeat); (*mTexCoords3)[34].set (-mTexRepeat, mTexRepeat); (*mTexCoords3)[35].set (-mTexRepeat, -mTexRepeat); } endif // __CUBE_VERTICES_H__


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.