Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 20th, 2010 | Syntax: None | Size: 2.98 KB | Hits: 55 | Expires: Never
Copy text to clipboard
  1. Procedure RenderingMethods_renderGraphicsObjectVERTEXARRAY(*pageList.GraphicsObjectPageList)
  2.    
  3.   RenderingMethods_applyGLModelViewTransformation()
  4.  
  5.   If(*pageList\pageAmount = 0 Or *pageList\objectAmount = 0)
  6.     ProcedureReturn
  7.   EndIf
  8.    
  9.   Define *page.GraphicsObjectPage = *pageList\firstPage
  10.   Define *obj.GraphicsObject
  11.   Define i.i
  12.   Define arrayi.i
  13.  
  14.   Define size = *pageList\objectAmount * 12 * SizeOf(Float)
  15.   Define *vertexArray = AllocateMemory(size)
  16.   Define *vert.ThreeFloatWrapper = *vertexArray
  17.  
  18.   size = *pageList\objectAmount * 8 * SizeOf(Float)
  19.   Define *uvArray = AllocateMemory(size)
  20.   Define *uv.TwoFloatWrapper = *uvArray
  21.  
  22.   size = *pageList\objectAmount * 16 * SizeOf(Byte)
  23.   Define *colorArray = AllocateMemory(size)
  24.   Define *color.FourByteWrapper = *colorArray
  25.   Define colValue.i
  26.  
  27.   While(*page <> #Null)
  28.     i = 0
  29.     *obj.GraphicsObject = *page\obj
  30.    
  31.     While(i < *page\size)
  32.       If(*obj\inUse = #True)
  33.      
  34.         colValue = *obj\colorRed << 24 + *obj\colorGreen << 16 + *obj\colorBlue << 8 + *obj\colorAlpha
  35.         ;Fill the color array with 4 * 4 values
  36.         FillMemory(*color, 16, colValue, #PB_Long)
  37.         *color = *color + 16
  38.  
  39.         *uv\value1 = *obj\u1        
  40.         *uv\value2 = *obj\v1
  41.         *uv = *uv + 8
  42.         *uv\value1 = *obj\u2
  43.         *uv\value2 = *obj\v1                
  44.         *uv = *uv + 8
  45.         *uv\value1 = *obj\u2
  46.         *uv\value2 = *obj\v2
  47.         *uv = *uv + 8
  48.         *uv\value1 = *obj\u1
  49.         *uv\value2 = *obj\v2
  50.         *uv = *uv + 8
  51.  
  52.      
  53.         *vert\value1 = *obj\x - *obj\vec1x
  54.         *vert\value2 = *obj\y - *obj\vec1y
  55.         *vert\value3 = *obj\z        
  56.         *vert = *vert + 12
  57.        
  58.         *vert\value1 = *obj\x + *obj\vec2x
  59.         *vert\value2 = *obj\y + *obj\vec2y
  60.         *vert\value3 = *obj\z
  61.         *vert = *vert + 12
  62.  
  63.         *vert\value1 = *obj\x + *obj\vec1x
  64.         *vert\value2 = *obj\y + *obj\vec1y
  65.         *vert\value3 = *obj\z
  66.         *vert = *vert + 12
  67.  
  68.         *vert\value1 = *obj\x - *obj\vec2x
  69.         *vert\value2 = *obj\y - *obj\vec2y
  70.         *vert\value3 = *obj\z
  71.         *vert = *vert + 12
  72.        
  73.         arrayi = arrayi + (SizeOf(Float))
  74.       EndIf
  75.       *obj = *obj + SizeOf(GraphicsObject)
  76.       i = i + 1
  77.     Wend
  78.    
  79.     *page = *page\nextPage
  80.   Wend
  81.  
  82.  
  83.    
  84.   glEnable(#GL_TEXTURE_2D)
  85.   glBindTexture(#GL_TEXTURE_2D, *g_CurrentTexObj\texture)
  86.  
  87.   glEnableClientState(#GL_VERTEX_ARRAY);
  88.   glEnableClientState(#GL_TEXTURE_COORD_ARRAY)
  89.   glEnableClientState(#GL_COLOR_ARRAY)
  90.  
  91.   glVertexPointer(3, #GL_FLOAT, 0, *vertexArray)  
  92.   glTexCoordPointer(2, #GL_FLOAT, 0, *uvArray)
  93.   glColorPointer(4, #GL_UNSIGNED_BYTE, 0, *colorArray)
  94.  
  95.   glDrawArrays(#GL_QUADS, 0, arrayi);
  96.   glDisableClientState(#GL_VERTEX_ARRAY);
  97.   glDisableClientState(#GL_TEXTURE_COORD_ARRAY)
  98.   glDisableClientState(#GL_COLOR_ARRAY)
  99.  
  100.   FreeMemory(*colorArray)
  101.   FreeMemory(*uvArray)
  102.   FreeMemory(*vertexArray)
  103.  
  104. EndProcedure