Mercurial > mm7
comparison Render.cpp @ 2002:2e6c63bdcfa9
RenderBillboardD3D initialization
Viewport initialization
some more constructor functions
author | zipi |
---|---|
date | Tue, 05 Nov 2013 23:35:21 +0000 |
parents | 079f2abf54e4 |
children | 30c2b575d25c |
comparison
equal
deleted
inserted
replaced
2001:79cdb74efa93 | 2002:2e6c63bdcfa9 |
---|---|
126 pSurface1->Release(); | 126 pSurface1->Release(); |
127 pSurface2->Release(); | 127 pSurface2->Release(); |
128 return v0; | 128 return v0; |
129 } | 129 } |
130 | 130 |
131 void Render::sub_4A19B0() | |
132 { | |
133 char *result; // eax@1 | |
134 signed int v1; // ecx@1 | |
135 /* | |
136 result = (char *)&this->pBillboardRenderListD3D[0].uOpacity; | |
137 v1 = 1000; | |
138 do | |
139 { | |
140 *(_DWORD *)result = 0; | |
141 *((_DWORD *)result + 1) = -1; | |
142 *((_DWORD *)result + 3) = -1; | |
143 *((_DWORD *)result - 34) = 4; | |
144 result += 156; | |
145 --v1; | |
146 } | |
147 while ( v1 ); | |
148 */ | |
149 for( int i = 0; i < 1000; i++ ) | |
150 { | |
151 this->pBillboardRenderListD3D[i].uOpacity = (RenderBillboardD3D::OpacityType)0; | |
152 this->pBillboardRenderListD3D[i].field_90 = -1; | |
153 this->pBillboardRenderListD3D[i].sParentBillboardID = -1; | |
154 this->pBillboardRenderListD3D[i].uNumVertices = 4; | |
155 } | |
156 | |
157 return; | |
158 } | |
159 | |
131 //----- (00440CB8) -------------------------------------------------------- | 160 //----- (00440CB8) -------------------------------------------------------- |
132 void Render::DrawBillboardList_BLV() | 161 void Render::DrawBillboardList_BLV() |
133 { | 162 { |
134 __int16 v2; // ax@3 | 163 __int16 v2; // ax@3 |
135 int v5; // eax@11 | 164 int v5; // eax@11 |
136 RenderBillboardTransform_local0 soft_billboard; // [sp+4h] [bp-50h]@1 | 165 RenderBillboardTransform_local0 soft_billboard; // [sp+4h] [bp-50h]@1 |
137 | 166 |
138 soft_billboard.uParentBillboardID = -1; | 167 soft_billboard.sParentBillboardID = -1; |
139 soft_billboard.pTarget = pBLVRenderParams->pRenderTarget; | 168 soft_billboard.pTarget = pBLVRenderParams->pRenderTarget; |
140 soft_billboard.pTargetZ = pBLVRenderParams->pTargetZBuffer; | 169 soft_billboard.pTargetZ = pBLVRenderParams->pTargetZBuffer; |
141 soft_billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; | 170 soft_billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; |
142 soft_billboard.uViewportX = pBLVRenderParams->uViewportX; | 171 soft_billboard.uViewportX = pBLVRenderParams->uViewportX; |
143 soft_billboard.uViewportY = pBLVRenderParams->uViewportY; | 172 soft_billboard.uViewportY = pBLVRenderParams->uViewportY; |
148 for (uint i = 0; i < ::uNumBillboardsToDraw; ++i) | 177 for (uint i = 0; i < ::uNumBillboardsToDraw; ++i) |
149 { | 178 { |
150 RenderBillboard* p = &pBillboardRenderList[i]; | 179 RenderBillboard* p = &pBillboardRenderList[i]; |
151 | 180 |
152 soft_billboard.uScreenSpaceX = p->uScreenSpaceX; | 181 soft_billboard.uScreenSpaceX = p->uScreenSpaceX; |
153 soft_billboard.uParentBillboardID = i; | 182 soft_billboard.sParentBillboardID = i; |
154 soft_billboard.uScreenSpaceY = p->uScreenSpaceY; | 183 soft_billboard.uScreenSpaceY = p->uScreenSpaceY; |
155 soft_billboard._screenspace_x_scaler_packedfloat = p->_screenspace_x_scaler_packedfloat; | 184 soft_billboard._screenspace_x_scaler_packedfloat = p->_screenspace_x_scaler_packedfloat; |
156 soft_billboard._screenspace_y_scaler_packedfloat = p->_screenspace_y_scaler_packedfloat; | 185 soft_billboard._screenspace_y_scaler_packedfloat = p->_screenspace_y_scaler_packedfloat; |
157 soft_billboard.sZValue = p->sZValue; | 186 soft_billboard.sZValue = p->sZValue; |
158 soft_billboard.uFlags = p->field_1E; | 187 soft_billboard.uFlags = p->field_1E; |
376 int v15; // [sp+54h] [bp-10h]@13 | 405 int v15; // [sp+54h] [bp-10h]@13 |
377 //int v16; // [sp+58h] [bp-Ch]@1 | 406 //int v16; // [sp+58h] [bp-Ch]@1 |
378 //int v17; // [sp+5Ch] [bp-8h]@2 | 407 //int v17; // [sp+5Ch] [bp-8h]@2 |
379 int v18; // [sp+60h] [bp-4h]@13 | 408 int v18; // [sp+60h] [bp-4h]@13 |
380 | 409 |
381 billboard.uParentBillboardID = -1; | 410 billboard.sParentBillboardID = -1; |
382 billboard.pTarget = pRenderer->pTargetSurface; | 411 billboard.pTarget = pRenderer->pTargetSurface; |
383 billboard.pTargetZ = pRenderer->pActiveZBuffer; | 412 billboard.pTargetZ = pRenderer->pActiveZBuffer; |
384 billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; | 413 billboard.uTargetPitch = pRenderer->uTargetSurfacePitch; |
385 billboard.uViewportX = pViewport->uViewportTL_X; | 414 billboard.uViewportX = pViewport->uViewportTL_X; |
386 billboard.uViewportY = pViewport->uViewportTL_Y; | 415 billboard.uViewportY = pViewport->uViewportTL_Y; |
392 { | 421 { |
393 RenderBillboard* pBillboard = &pBillboardRenderList[i]; | 422 RenderBillboard* pBillboard = &pBillboardRenderList[i]; |
394 | 423 |
395 billboard.uScreenSpaceX = pBillboard->uScreenSpaceX; | 424 billboard.uScreenSpaceX = pBillboard->uScreenSpaceX; |
396 billboard.uScreenSpaceY = pBillboard->uScreenSpaceY; | 425 billboard.uScreenSpaceY = pBillboard->uScreenSpaceY; |
397 billboard.uParentBillboardID = i; | 426 billboard.sParentBillboardID = i; |
398 billboard._screenspace_x_scaler_packedfloat = pBillboard->_screenspace_x_scaler_packedfloat; | 427 billboard._screenspace_x_scaler_packedfloat = pBillboard->_screenspace_x_scaler_packedfloat; |
399 billboard.uTintColor = pBillboard->uTintColor; | 428 billboard.uTintColor = pBillboard->uTintColor; |
400 billboard._screenspace_y_scaler_packedfloat = pBillboard->_screenspace_y_scaler_packedfloat; | 429 billboard._screenspace_y_scaler_packedfloat = pBillboard->_screenspace_y_scaler_packedfloat; |
401 billboard.sZValue = pBillboard->sZValue; | 430 billboard.sZValue = pBillboard->sZValue; |
402 billboard.uFlags = pBillboard->field_1E; | 431 billboard.uFlags = pBillboard->field_1E; |
2093 uNumBillboardsToDraw = 0; | 2122 uNumBillboardsToDraw = 0; |
2094 bFogEnabled = false; | 2123 bFogEnabled = false; |
2095 | 2124 |
2096 hd_water_tile_id = -1; | 2125 hd_water_tile_id = -1; |
2097 hd_water_current_frame = 0; | 2126 hd_water_current_frame = 0; |
2127 sub_4A19B0(); | |
2098 } | 2128 } |
2099 | 2129 |
2100 bool Render::Initialize(bool bWindowed, OSWindow *window, bool bColoredLights, uint32_t uDetailLevel, bool bTinting) | 2130 bool Render::Initialize(bool bWindowed, OSWindow *window, bool bColoredLights, uint32_t uDetailLevel, bool bTinting) |
2101 { | 2131 { |
2102 //bUserDirect3D = true;//ReadWindowsRegistryInt("Use D3D", 0); | 2132 //bUserDirect3D = true;//ReadWindowsRegistryInt("Use D3D", 0); |
4506 } | 4536 } |
4507 | 4537 |
4508 //----- (004A1EA3) -------------------------------------------------------- | 4538 //----- (004A1EA3) -------------------------------------------------------- |
4509 unsigned int Render::GetParentBillboardID(unsigned int uBillboardID) | 4539 unsigned int Render::GetParentBillboardID(unsigned int uBillboardID) |
4510 { | 4540 { |
4511 return pRenderer->pBillboardRenderListD3D[uBillboardID].uParentBillboardID; | 4541 return pRenderer->pBillboardRenderListD3D[uBillboardID].sParentBillboardID; |
4512 } | 4542 } |
4513 | 4543 |
4514 //----- (004A1EB6) -------------------------------------------------------- | 4544 //----- (004A1EB6) -------------------------------------------------------- |
4515 void Render::BeginSceneD3D() | 4545 void Render::BeginSceneD3D() |
4516 { | 4546 { |
5595 else | 5625 else |
5596 pBillboardRenderListD3D[v7].uOpacity = RenderBillboardD3D::Transparent; | 5626 pBillboardRenderListD3D[v7].uOpacity = RenderBillboardD3D::Transparent; |
5597 //v10 = a3; | 5627 //v10 = a3; |
5598 pBillboardRenderListD3D[v7].field_90 = pSoftBillboard->field_44; | 5628 pBillboardRenderListD3D[v7].field_90 = pSoftBillboard->field_44; |
5599 pBillboardRenderListD3D[v7].sZValue = pSoftBillboard->sZValue; | 5629 pBillboardRenderListD3D[v7].sZValue = pSoftBillboard->sZValue; |
5600 pBillboardRenderListD3D[v7].uParentBillboardID = pSoftBillboard->uParentBillboardID; | 5630 pBillboardRenderListD3D[v7].sParentBillboardID = pSoftBillboard->sParentBillboardID; |
5601 //v25 = pSoftBillboard->uScreenSpaceX; | 5631 //v25 = pSoftBillboard->uScreenSpaceX; |
5602 //v24 = pSoftBillboard->uScreenSpaceY; | 5632 //v24 = pSoftBillboard->uScreenSpaceY; |
5603 a1 = (pSoftBillboard->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_x_scaler_packedfloat); | 5633 a1 = (pSoftBillboard->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_x_scaler_packedfloat); |
5604 v29 = (pSoftBillboard->_screenspace_y_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_y_scaler_packedfloat); | 5634 v29 = (pSoftBillboard->_screenspace_y_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(pSoftBillboard->_screenspace_y_scaler_packedfloat); |
5605 v31 = (double)((pSprite->uBufferWidth >> 1) - pSprite->uAreaX); | 5635 v31 = (double)((pSprite->uBufferWidth >> 1) - pSprite->uAreaX); |
5728 //v7 = v5; | 5758 //v7 = v5; |
5729 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth); | 5759 v8 = Billboard_ProbablyAddToListAndSortByZOrder(a2->zbuffer_depth); |
5730 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; | 5760 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; |
5731 pBillboardRenderListD3D[v8].field_90 = a2->field_44; | 5761 pBillboardRenderListD3D[v8].field_90 = a2->field_44; |
5732 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; | 5762 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; |
5733 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; | 5763 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID; |
5734 //v9 = a2->uScreenSpaceX; | 5764 //v9 = a2->uScreenSpaceX; |
5735 //v10 = a2->uScreenSpaceY; | 5765 //v10 = a2->uScreenSpaceY; |
5736 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); | 5766 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); |
5737 //v12 = (double) a2->uScreenSpaceX; | 5767 //v12 = (double) a2->uScreenSpaceX; |
5738 //v13 = v12; | 5768 //v13 = v12; |
5901 v7 = v5; | 5931 v7 = v5; |
5902 v8 = Billboard_ProbablyAddToListAndSortByZOrder(LODWORD(v7)); | 5932 v8 = Billboard_ProbablyAddToListAndSortByZOrder(LODWORD(v7)); |
5903 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; | 5933 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_1; |
5904 pBillboardRenderListD3D[v8].field_90 = a2->field_44; | 5934 pBillboardRenderListD3D[v8].field_90 = a2->field_44; |
5905 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; | 5935 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; |
5906 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; | 5936 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID; |
5907 v9 = a2->uScreenSpaceX; | 5937 v9 = a2->uScreenSpaceX; |
5908 v10 = a2->uScreenSpaceY; | 5938 v10 = a2->uScreenSpaceY; |
5909 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); | 5939 v11 = (a2->_screenspace_x_scaler_packedfloat & 0xFFFF) * 0.000015260186 + HIWORD(a2->_screenspace_x_scaler_packedfloat); |
5910 v12 = (double)v9; | 5940 v12 = (double)v9; |
5911 v13 = v12; | 5941 v13 = v12; |
6115 pBillboardRenderListD3D[v8].uNumVertices = 4; | 6145 pBillboardRenderListD3D[v8].uNumVertices = 4; |
6116 pBillboardRenderListD3D[v8].pTexture = pSprite->pTexture; | 6146 pBillboardRenderListD3D[v8].pTexture = pSprite->pTexture; |
6117 pBillboardRenderListD3D[v8].z_order = a2->zbuffer_depth; | 6147 pBillboardRenderListD3D[v8].z_order = a2->zbuffer_depth; |
6118 pBillboardRenderListD3D[v8].field_90 = a2->field_44; | 6148 pBillboardRenderListD3D[v8].field_90 = a2->field_44; |
6119 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; | 6149 pBillboardRenderListD3D[v8].sZValue = a2->sZValue; |
6120 pBillboardRenderListD3D[v8].uParentBillboardID = a2->uParentBillboardID; | 6150 pBillboardRenderListD3D[v8].sParentBillboardID = a2->sParentBillboardID; |
6121 | 6151 |
6122 if (a2->uTintColor & 0xFF000000) | 6152 if (a2->uTintColor & 0xFF000000) |
6123 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_3; | 6153 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Opaque_3; |
6124 else | 6154 else |
6125 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Transparent; | 6155 pBillboardRenderListD3D[v8].uOpacity = RenderBillboardD3D::Transparent; |
6304 depth = a1->field_104[i * 4].z; | 6334 depth = a1->field_104[i * 4].z; |
6305 } | 6335 } |
6306 | 6336 |
6307 v5 = Billboard_ProbablyAddToListAndSortByZOrder(depth); | 6337 v5 = Billboard_ProbablyAddToListAndSortByZOrder(depth); |
6308 pBillboardRenderListD3D[v5].field_90 = 0; | 6338 pBillboardRenderListD3D[v5].field_90 = 0; |
6309 pBillboardRenderListD3D[v5].uParentBillboardID = -1; | 6339 pBillboardRenderListD3D[v5].sParentBillboardID = -1; |
6310 pBillboardRenderListD3D[v5].uOpacity = RenderBillboardD3D::Opaque_2; | 6340 pBillboardRenderListD3D[v5].uOpacity = RenderBillboardD3D::Opaque_2; |
6311 pBillboardRenderListD3D[v5].pTexture = 0; | 6341 pBillboardRenderListD3D[v5].pTexture = 0; |
6312 pBillboardRenderListD3D[v5].uNumVertices = a1->uNumVertices; | 6342 pBillboardRenderListD3D[v5].uNumVertices = a1->uNumVertices; |
6313 pBillboardRenderListD3D[v5].z_order = depth; | 6343 pBillboardRenderListD3D[v5].z_order = depth; |
6314 | 6344 |