diff Render.cpp @ 1207:96a81634669e

arrays to std::arrays phase 3 - finishing global arrays undone changes in render.h, because framerate dropped by half
author Grumpy7
date Sun, 09 Jun 2013 01:30:36 +0200
parents ab6560001f5b
children 0aeac0b9ca30
line wrap: on
line diff
--- a/Render.cpp	Sun Jun 09 01:10:49 2013 +0200
+++ b/Render.cpp	Sun Jun 09 01:30:36 2013 +0200
@@ -42,28 +42,28 @@
 
 struct IDirectDrawClipper *pDDrawClipper;
 struct Render *pRenderer; // idb
-struct RenderVertexD3D3 pVertices[50];
+struct RenderVertexD3D3  pVertices[50];
 int uNumDecorationsDrawnThisFrame; // weak
-std::array<RenderBillboard, 500> pBillboardRenderList;
+RenderBillboard pBillboardRenderList[500];
 unsigned int uNumBillboardsToDraw;
 int uNumSpritesDrawnThisFrame; // weak
 
-std::array<RenderVertexSoft, 50> array_507D30;
-std::array<RenderVertexSoft, 50> array_508690;
-std::array<RenderVertexSoft, 50> array_508FF0;
-std::array<RenderVertexSoft, 50> array_509950;
-std::array<RenderVertexSoft, 100> array_50A2B0;
-std::array<RenderVertexSoft, 50> array_50AC10;
-
-std::array<RenderVertexSoft, 20> array_73D150;
-
-std::array<RenderVertexD3D3, 50> d3d_vertex_buffer;
+RenderVertexSoft array_507D30[50];
+RenderVertexSoft array_508690[50];
+RenderVertexSoft array_508FF0[50];
+RenderVertexSoft array_509950[50];
+RenderVertexSoft array_50A2B0[50];
+RenderVertexSoft array_50AC10[50];
+
+RenderVertexSoft array_73D150[20];
+
+RenderVertexD3D3 d3d_vertex_buffer[50];
 
 RenderVertexSoft *ptr_801A04;
 RenderVertexSoft *ptr_801A08;
 
-std::array<RenderVertexSoft, 384> pVerticesSR_801A10;
-std::array<RenderVertexSoft, 384> pVerticesSR_806210;
+RenderVertexSoft pVerticesSR_801A10[384];
+RenderVertexSoft pVerticesSR_806210[384];
 
 void SetBillboardBlendOptions(RenderBillboardD3D::OpacityType a1);
 
@@ -161,7 +161,7 @@
   pOutdoorCamera->uNumBillboards = ::uNumBillboardsToDraw;
   for (uint i = 0; i < ::uNumBillboardsToDraw; ++i)
   {
-    auto p = &pBillboardRenderList[i];
+    auto p = pBillboardRenderList + i;
 
       soft_billboard.uScreenSpaceX = p->uScreenSpaceX;
       soft_billboard.uParentBillboardID = i;
@@ -1531,8 +1531,8 @@
       break;
   }
   //v69 = v16 - 1;
-  ptr_801A08 = pVerticesSR_806210.data();
-  ptr_801A04 = pVerticesSR_801A10.data();
+  ptr_801A08 = pVerticesSR_806210;
+  ptr_801A04 = pVerticesSR_801A10;
   //v126 = v69;
 
   if ( v105 && v105 != 7 && v105 != 3 && v105 != 4 )//блок
@@ -1774,16 +1774,16 @@
       //v8->field_5C = WorldPosToGridCellX(floorf((v101->vWorldPosition.x + v8->vWorldPosition.x) / 2 + 0.5f));;
       v8->sTextureDeltaU = 0;
       v8->sTextureDeltaV = 0;
-      memcpy(&array_73D150[0], &pTerrainVertices[z * 128 + x], sizeof(RenderVertexSoft));
+      memcpy(array_73D150 + 0, &pTerrainVertices[z * 128 + x], sizeof(RenderVertexSoft));
       array_73D150[0].u = 0;
       array_73D150[0].v = 0;
-      memcpy(&array_73D150[1], &pTerrainVertices[z * 128 + x + 1], sizeof(RenderVertexSoft));
+      memcpy(array_73D150 + 1, &pTerrainVertices[z * 128 + x + 1], sizeof(RenderVertexSoft));
       array_73D150[1].u = 1;
       array_73D150[1].v = 0;
-      memcpy(&array_73D150[2], &pTerrainVertices[(z + 1) * 128 + x + 1], sizeof(RenderVertexSoft));
+      memcpy(array_73D150 + 2, &pTerrainVertices[(z + 1) * 128 + x + 1], sizeof(RenderVertexSoft));
       array_73D150[2].u = 1;
       array_73D150[2].v = 1;
-      memcpy(&array_73D150[3], &pTerrainVertices[(z + 1) * 128 + x], sizeof(RenderVertexSoft));
+      memcpy(array_73D150 + 3, &pTerrainVertices[(z + 1) * 128 + x], sizeof(RenderVertexSoft));
       array_73D150[3].u = 0;
       array_73D150[3].v = 1;
       v55 = 0;
@@ -2096,18 +2096,18 @@
             stru154(stru_76D5A8);
             atexit(loc_481199);
           }*/
-          v32 = (struct8 *)array_50AC10.data();
+          v32 = (struct8 *)array_50AC10;
           v97 = (int)pGame->pLightmapBuilder;
-          pGame->pLightmapBuilder->StackLights_TerrainFace(v23, &v95, array_50AC10.data(), 4, 1);
-          pDecalBuilder->_49BE8A(v16, v23, &v95, array_50AC10.data(), 4, 1);
+          pGame->pLightmapBuilder->StackLights_TerrainFace(v23, &v95, array_50AC10, 4, 1);
+          pDecalBuilder->_49BE8A(v16, v23, &v95, array_50AC10, 4, 1);
           a5 = 4;
           if ( byte_4D864C && pGame->uFlags & 0x80 )
           {
             thisa = pGame->pIndoorCameraD3D;
-            if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10.data(), &a5, 0) == 1 && !a5 )
+            if ( pGame->pIndoorCameraD3D->_4371C3(array_50AC10, &a5, 0) == 1 && !a5 )
               goto LABEL_162;
-            thisa->ViewTransform(array_50AC10.data(), a5);
-            thisa->Project(array_50AC10.data(), a5, 0);
+            thisa->ViewTransform(array_50AC10, a5);
+            thisa->Project(array_50AC10, a5, 0);
           }
           this_3 = v102->vWorldViewPosition.x < 8.0 || pVertices->vWorldViewPosition.x < 8.0
               || v101->vWorldViewPosition.x < 8.0 || pVertices2->vWorldViewPosition.x < 8.0;
@@ -2124,10 +2124,10 @@
               v33 = v108 != 0 ? 5 : 0;
             static_sub_0048034E_stru_154.ClassifyPolygon(v23, v95);
             if ( pDecalBuilder->uNumDecals > 0 )
-              pDecalBuilder->ApplyDecals(31 - v16->dimming_level, 4, &static_sub_0048034E_stru_154, a5, array_50AC10.data(), 0, *(float *)&v33, -1);
+              pDecalBuilder->ApplyDecals(31 - v16->dimming_level, 4, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, *(float *)&v33, -1);
           }
           if ( stru_F8AD28.uNumLightsApplied > 0 )
-            pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10.data(), 0, v33);
+            pGame->pLightmapBuilder->ApplyLights(&stru_F8AD28, &static_sub_0048034E_stru_154, a5, array_50AC10, 0, v33);
           v34 = a5;
           //v35 = byte_4D864C == 0;
           v16->uNumVertices = a5;
@@ -2653,7 +2653,7 @@
         if ( !sub_481FC9(v10, (RenderVertexSoft *)HIDWORD(v101), v102, v17) )
           goto LABEL_104;
         v26 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001);
-        memcpy(array_50AC10.data(), v104, 0x30u);
+        memcpy(array_50AC10, v104, 0x30u);
         array_50AC10[0]._rhw = v26;
         array_50AC10[0].u = 0.0;
         array_50AC10[0].v = 0.0;
@@ -2672,7 +2672,7 @@
         array_50AC10[3]._rhw = 1.0 / v29;
         array_50AC10[3].u = 1.0;
         array_50AC10[3].v = 0.0;
-        pGame->pLightmapBuilder->StackLights_TerrainFace(pNormal, &a3a, array_50AC10.data(), 4u, 1);
+        pGame->pLightmapBuilder->StackLights_TerrainFace(pNormal, &a3a, array_50AC10, 4u, 1);
         if ( stru_F8AD28.uNumLightsApplied <= 0 )
         {
           v17->field_108 = 0;
@@ -2681,7 +2681,7 @@
         {
           v30 = pGame;
           v17->field_108 = 1;
-          pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10.data(), 4, pNormal);
+          pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10, 4, pNormal);
         }
         if ( v104->vWorldViewPosition.x < 8.0
           || *(float *)(HIDWORD(v101) + 12) < 8.0
@@ -2774,7 +2774,7 @@
     if ( !sub_481FC9((RenderVertexSoft *)HIDWORD(v101), v103, v104, v38) )
       goto LABEL_74;
     v48 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001);
-    memcpy(array_50AC10.data(), v104, 0x30u);
+    memcpy(array_50AC10, v104, 0x30u);
     array_50AC10[0]._rhw = v48;
     array_50AC10[0].u = 0.0;
     array_50AC10[0].v = 0.0;
@@ -2788,7 +2788,7 @@
     array_50AC10[2]._rhw = 1.0 / v50;
     array_50AC10[2].u = 1.0;
     array_50AC10[2].v = 1.0;
-    pGame->pLightmapBuilder->StackLights_TerrainFace(pNormala, &v78, array_50AC10.data(), 3u, 0);
+    pGame->pLightmapBuilder->StackLights_TerrainFace(pNormala, &v78, array_50AC10, 3u, 0);
     if ( stru_F8AD28.uNumLightsApplied <= 0 )
     {
       v38->field_108 = 0;
@@ -2797,7 +2797,7 @@
     {
       v51 = pGame;
       v38->field_108 = 1;
-      pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10.data(), 3, pNormala);
+      pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10, 3, pNormala);
     }
     if ( v104->vWorldViewPosition.x < 8.0
       || *(float *)(HIDWORD(v101) + 12) < 8.0
@@ -2818,7 +2818,7 @@
         {
           sr_sub_4829B9((RenderVertexSoft *)HIDWORD(v101), v52, v104, v38, 0);
 LABEL_68:
-          sr_sub_481DB2(array_508690.data(), v54, v38);
+          sr_sub_481DB2(array_508690, v54, v38);
 LABEL_75:
           v17 = &array_77EC08[pOutdoorCamera->numStru148s];
           v57 = pOutdoor->GetTileTexture(v101, v100);
@@ -2868,7 +2868,7 @@
             goto LABEL_105;
           }
           v62 = 1.0 / (v104->vWorldViewPosition.x + 0.0000001);
-          memcpy(array_50AC10.data(), v104, 0x30u);
+          memcpy(array_50AC10, v104, 0x30u);
           array_50AC10[0]._rhw = v62;
           array_50AC10[0].u = 0.0;
           array_50AC10[0].v = 0.0;
@@ -2882,7 +2882,7 @@
           array_50AC10[2]._rhw = 1.0 / v64;
           array_50AC10[2].u = 1.0;
           array_50AC10[2].v = 0.0;
-          pGame->pLightmapBuilder->StackLights_TerrainFace(pNormalb, &v70, array_50AC10.data(), 3u, 1);
+          pGame->pLightmapBuilder->StackLights_TerrainFace(pNormalb, &v70, array_50AC10, 3u, 1);
           if ( stru_F8AD28.uNumLightsApplied <= 0 )
           {
             v17->field_108 = 0;
@@ -2891,7 +2891,7 @@
           {
             v65 = pGame;
             v17->field_108 = 1;
-            pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10.data(), 3, pNormalb);
+            pGame->pLightmapBuilder->_45CA88(&stru_F8AD28, array_50AC10, 3, pNormalb);
           }
           if ( v104->vWorldViewPosition.x < 8.0 || v103->vWorldViewPosition.x < 8.0 || v102->vWorldViewPosition.x < 8.0 )
           {
@@ -2921,7 +2921,7 @@
 LABEL_37:
           sr_sub_4829B9(v35, v34, v67, v68, v69);
 LABEL_38:
-          sr_sub_481DB2(array_508690.data(), v33, v17);
+          sr_sub_481DB2(array_508690, v33, v17);
           goto LABEL_105;
         }
         goto LABEL_74;
@@ -2981,7 +2981,7 @@
 
   for (int i = 0; i < ::uNumBillboardsToDraw; ++i)
   {
-    auto pBillboard = &pBillboardRenderList[i];
+    auto pBillboard = pBillboardRenderList + i;
 
     billboard.uScreenSpaceX = pBillboard->uScreenSpaceX;
     billboard.uScreenSpaceY = pBillboard->uScreenSpaceY;
@@ -3079,7 +3079,7 @@
   //v41 = 0;
   for (int i = 0; i < uNumSpriteObjects; ++i)
   {
-    auto object = pSpriteObjects + i;
+    auto object = &pSpriteObjects[i];
     //auto v0 = (char *)&pSpriteObjects[i].uSectorID;
     //v0 = (char *)&pSpriteObjects[0].uSectorID;
     //do
@@ -4508,7 +4508,7 @@
         pRenderD3D->pDevice->SetTexture(0, pTexture);
         pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                                            D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-                                           d3d_vertex_buffer.data(),
+                                           d3d_vertex_buffer,
                                            uNumVertices,
                                            D3DDP_DONOTLIGHT);
       }
@@ -4543,7 +4543,7 @@
         ErrD3D(pRenderD3D->pDevice->SetTexture(0, nullptr));
         ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                                                   D3DFVF_XYZRHW | D3DFVF_TEX1 | D3DFVF_DIFFUSE | D3DFVF_SPECULAR,
-                                                  d3d_vertex_buffer.data(),
+                                                  d3d_vertex_buffer,
                                                   uNumVertices,
                                                   D3DDP_DONOTLIGHT));
         //v50 = (const char *)v5->pRenderD3D->pDevice;
@@ -4564,7 +4564,7 @@
         ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCCOLOR));
         ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                                                   D3DFVF_XYZRHW | D3DFVF_TEX1 | D3DFVF_DIFFUSE | D3DFVF_SPECULAR,
-                                                  d3d_vertex_buffer.data(),
+                                                  d3d_vertex_buffer,
                                                   uNumVertices,
                                                   D3DDP_DONOTLIGHT));
         if (bUsingSpecular)
@@ -4582,7 +4582,7 @@
           ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCALPHA));
           ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                                                     D3DFVF_XYZRHW | D3DFVF_TEX1 | D3DFVF_DIFFUSE | D3DFVF_SPECULAR,
-                                                    d3d_vertex_buffer.data(),
+                                                    d3d_vertex_buffer,
                                                     uNumVertices,
                                                     D3DDP_DONOTLIGHT));
           ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_FOGENABLE, TRUE));
@@ -7415,7 +7415,7 @@
 		}
 
 		this->pRenderD3D->pDevice->SetTexture(0, a5);
-        this->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, d3d_vertex_buffer.data(), uNumVertices, 16);
+        this->pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1, d3d_vertex_buffer, uNumVertices, 16);
         if (transparent)
         {
           ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE, FALSE));
@@ -7453,7 +7453,7 @@
         ErrD3D(pRenderD3D->pDevice->SetTexture(0, 0));
         ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-                d3d_vertex_buffer.data(),
+                d3d_vertex_buffer,
                 uNumVertices,
                 16));
         //v63 = (const char *)v7->pRenderD3D->pDevice;
@@ -7475,7 +7475,7 @@
         ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCCOLOR));
         ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-                d3d_vertex_buffer.data(),
+                d3d_vertex_buffer,
                 uNumVertices,
                 16));
         if ( pRenderer->bUsingSpecular )
@@ -7493,7 +7493,7 @@
           ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCALPHA));
           ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                   D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-                  d3d_vertex_buffer.data(),
+                  d3d_vertex_buffer,
                   uNumVertices,
                   16));
           ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_FOGENABLE, TRUE));
@@ -7510,7 +7510,7 @@
     }
 
     if (pIndoorCamera->flags & INDOOR_CAMERA_DRAW_TERRAIN_OUTLINES || pBLVRenderParams->uFlags & INDOOR_CAMERA_DRAW_TERRAIN_OUTLINES)
-      pGame->pIndoorCameraD3D->debug_outline_d3d(d3d_vertex_buffer.data(), uNumVertices, 0x00FFFFFF, 0.0);
+      pGame->pIndoorCameraD3D->debug_outline_d3d(d3d_vertex_buffer, uNumVertices, 0x00FFFFFF, 0.0);
   }
 // 4A26BC: could not find valid save-restore pair for esi
 // 4D864C: using guessed type char byte_4D864C;
@@ -7594,7 +7594,7 @@
       ErrD3D(pRenderD3D->pDevice->SetTexture(0, pHwTex));
       ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
         D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-        d3d_vertex_buffer.data(),
+        d3d_vertex_buffer,
         a2,
         28));
     }
@@ -7682,7 +7682,7 @@
       ErrD3D(pRenderD3D->pDevice->DrawPrimitive(
               D3DPT_TRIANGLEFAN,
               D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-              d3d_vertex_buffer.data(),
+              d3d_vertex_buffer,
               uNumVertices,
               28));
       pGame->pLightmapBuilder->_45D74F_MessWithLight(-1, 0);
@@ -7708,7 +7708,7 @@
       ErrD3D(pRenderD3D->pDevice->SetTexture(0, pHwTex));
       ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-                d3d_vertex_buffer.data(),
+                d3d_vertex_buffer,
                 uNumVertices,
                 28));
     }
@@ -7760,7 +7760,7 @@
         ErrD3D(pRenderD3D->pDevice->SetTexture(0, nullptr));
         ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-                d3d_vertex_buffer.data(),
+                d3d_vertex_buffer,
                 uNumVertices,
                 28));
 
@@ -7789,7 +7789,7 @@
         ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_DESTBLEND, D3DBLEND_SRCCOLOR));
         ErrD3D(pRenderD3D->pDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,
                 D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1,
-                d3d_vertex_buffer.data(),
+                d3d_vertex_buffer,
                 uNumVertices,
                 28));
         ErrD3D(pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_SRCBLEND, D3DBLEND_ONE));