Advertisement
xerpi

rendercubes

Jul 19th, 2013
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.46 KB | None | 0 0
  1. void Chunk::renderCubes()
  2. {
  3.     GX_SetArray(GX_VA_POS, blockPositionVertices, 3 * sizeof(float));
  4.     GX_SetArray(GX_VA_TEX0, blockTexCoordVertices, 2 * sizeof(float));
  5.  
  6.     GX_SetCurrentMtx(GX_PNMTX0);
  7.  
  8.     float x, y, z;
  9.     std::vector <struct cubeFaceData_t>::iterator it;
  10.     for(it = cubeFaceDataList.begin(); it != cubeFaceDataList.end(); ++it) {
  11.         x = indexX * CHUNK_SIZE + it->cubePosIndex.x * BLOCK_SIZE;
  12.         y = indexY * CHUNK_SIZE + it->cubePosIndex.y * BLOCK_SIZE;
  13.         z = indexZ * CHUNK_SIZE + it->cubePosIndex.z * BLOCK_SIZE;
  14.  
  15.         MatrixStack.Push();
  16.         MatrixStack.Translate(x, y, z);
  17.         MatrixStack.Set(GX_PNMTX0);
  18.  
  19.         TextureManager.setBlockTextureSide(it->cubeID);
  20.         if(it->face & CUBE_FACE_FRONT) {
  21.             GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
  22.                 GX_Position1x8(0);
  23.                     GX_TexCoord1x8(0);
  24.                 GX_Position1x8(1);
  25.                     GX_TexCoord1x8(1);
  26.                 GX_Position1x8(2);
  27.                     GX_TexCoord1x8(2);
  28.                 GX_Position1x8(3);
  29.                     GX_TexCoord1x8(3);
  30.             GX_End();
  31.         }
  32.         if(it->face & CUBE_FACE_RIGHT) {
  33.             GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
  34.                 GX_Position1x8(2);
  35.                     GX_TexCoord1x8(0);
  36.                 GX_Position1x8(3);
  37.                     GX_TexCoord1x8(1);
  38.                 GX_Position1x8(4);
  39.                     GX_TexCoord1x8(2);
  40.                 GX_Position1x8(5);
  41.                     GX_TexCoord1x8(3);
  42.             GX_End();
  43.         }
  44.         if(it->face & CUBE_FACE_BACK) {
  45.             GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
  46.                 GX_Position1x8(4);
  47.                     GX_TexCoord1x8(0);
  48.                 GX_Position1x8(5);
  49.                     GX_TexCoord1x8(1);
  50.                 GX_Position1x8(6);
  51.                     GX_TexCoord1x8(2);
  52.                 GX_Position1x8(7);
  53.                     GX_TexCoord1x8(3);
  54.             GX_End();
  55.         }
  56.         if(it->face & CUBE_FACE_LEFT) {
  57.             GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
  58.                 GX_Position1x8(6);
  59.                     GX_TexCoord1x8(0);
  60.                 GX_Position1x8(7);
  61.                     GX_TexCoord1x8(1);
  62.                 GX_Position1x8(0);
  63.                     GX_TexCoord1x8(2);
  64.                 GX_Position1x8(1);
  65.                     GX_TexCoord1x8(3);
  66.             GX_End();
  67.         }
  68.         if(it->face & CUBE_FACE_TOP) {
  69.             TextureManager.setBlockTextureTop(it->cubeID);
  70.             GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
  71.                 GX_Position1x8(1);
  72.                     GX_TexCoord1x8(0);
  73.                 GX_Position1x8(7);
  74.                     GX_TexCoord1x8(1);
  75.                 GX_Position1x8(3);
  76.                     GX_TexCoord1x8(2);
  77.                 GX_Position1x8(5);
  78.                     GX_TexCoord1x8(3);
  79.             GX_End();
  80.         }
  81.         if(it->face & CUBE_FACE_BOTTOM) {
  82.             TextureManager.setBlockTextureBottom(it->cubeID);
  83.             GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
  84.                 GX_Position1x8(6);
  85.                     GX_TexCoord1x8(0);
  86.                 GX_Position1x8(0);
  87.                     GX_TexCoord1x8(1);
  88.                 GX_Position1x8(4);
  89.                     GX_TexCoord1x8(2);
  90.                 GX_Position1x8(2);
  91.                     GX_TexCoord1x8(3);
  92.             GX_End();
  93.         }
  94.         GX_InvalidateTexAll();
  95.         MatrixStack.Pop();
  96.     }
  97.  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement