Mercurial > mm7
comparison Render.cpp @ 265:96bc024a5fed
Render overflows
author | Nomad |
---|---|
date | Mon, 18 Feb 2013 10:04:47 +0200 |
parents | 9b77686e2239 |
children | 2a09e1d6fc8f |
comparison
equal
deleted
inserted
replaced
257:96f3a1177b37 | 265:96bc024a5fed |
---|---|
1832 v8->uNumVertices = 4; | 1832 v8->uNumVertices = 4; |
1833 v8->field_59 = 5; | 1833 v8->field_59 = 5; |
1834 v8->field_58 = 0; | 1834 v8->field_58 = 0; |
1835 ++pOutdoorCamera->numStru148s; | 1835 ++pOutdoorCamera->numStru148s; |
1836 ++pOutdoorCamera->field_44; | 1836 ++pOutdoorCamera->field_44; |
1837 assert(pOutdoorCamera->numStru148s < 20000); | |
1838 | |
1837 v8->uBModelID = 0; | 1839 v8->uBModelID = 0; |
1838 v8->uBModelFaceID = 0; | 1840 v8->uBModelFaceID = 0; |
1839 v31 = (8 * (0 | (0 << 6))); | 1841 v31 = (8 * (0 | (0 << 6))); |
1840 v8->field_50 = v31 | 6; | 1842 v8->field_50 = v31 | 6; |
1841 for (unsigned int k = 0; k < 4; ++k) | 1843 for (unsigned int k = 0; k < v8->uNumVertices; ++k) |
1842 { | 1844 { |
1843 memcpy(&array_50AC10[k], &array_73D150[k], sizeof(struct RenderVertexSoft)); | 1845 memcpy(&array_50AC10[k], &array_73D150[k], sizeof(struct RenderVertexSoft)); |
1844 array_50AC10[k]._rhw = 1.0 / (array_73D150[k].vWorldViewPosition.x + 0.0000001000000011686097); | 1846 array_50AC10[k]._rhw = 1.0 / (array_73D150[k].vWorldViewPosition.x + 0.0000001000000011686097); |
1845 } | 1847 } |
1846 | 1848 |
1847 bool transparent = false; | 1849 bool transparent = false; |
1848 if ( v8->flags & 2 && v8->uTileBitmapID == pRenderer->field_1036AC_bitmapid ) | 1850 if ( v8->flags & 2 && v8->uTileBitmapID == pRenderer->hd_water_tile_id) |
1849 { | 1851 { |
1850 //v80 = false; | 1852 //v80 = false; |
1851 v6 = pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]; | 1853 v6 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; |
1852 } | 1854 } |
1853 else | 1855 else |
1854 { | 1856 { |
1855 v6 = v8->uTileBitmapID; | 1857 v6 = v8->uTileBitmapID; |
1856 transparent = true; | 1858 transparent = true; |
1860 | 1862 |
1861 // for all shore tiles - draw a tile water under them since they're half-empty | 1863 // for all shore tiles - draw a tile water under them since they're half-empty |
1862 if (!strnicmp(pBitmaps_LOD->pTextures[v8->uTileBitmapID].pName, "wtrdr", 5)) // all shore tile filenames are wtrdrXXX | 1864 if (!strnicmp(pBitmaps_LOD->pTextures[v8->uTileBitmapID].pName, "wtrdr", 5)) // all shore tile filenames are wtrdrXXX |
1863 { | 1865 { |
1864 pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, FALSE); // no Z writing: the shore tile will be draw in the same place, so taking care about z-fighting | 1866 pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, FALSE); // no Z writing: the shore tile will be draw in the same place, so taking care about z-fighting |
1865 pRenderer->DrawTerrainPolygon(v8->uNumVertices, v8, pBitmaps_LOD->pHardwareTextures[pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]], false, true); | 1867 pRenderer->DrawTerrainPolygon(v8->uNumVertices, v8, pBitmaps_LOD->pHardwareTextures[pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]], false, true); |
1866 pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, TRUE); | 1868 pRenderD3D->pDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, TRUE); |
1867 | 1869 |
1868 } | 1870 } |
1869 | 1871 |
1870 pRenderer->DrawTerrainPolygon(v8->uNumVertices, v8, pBitmaps_LOD->pHardwareTextures[v6], transparent, true); | 1872 pRenderer->DrawTerrainPolygon(v8->uNumVertices, v8, pBitmaps_LOD->pHardwareTextures[v6], transparent, true); |
2172 } | 2174 } |
2173 } | 2175 } |
2174 //v37 = *(int *)&v16->flags; | 2176 //v37 = *(int *)&v16->flags; |
2175 if ( ~v16->flags & 1 ) | 2177 if ( ~v16->flags & 1 ) |
2176 { | 2178 { |
2177 if ( v16->flags & 2 && v16->uTileBitmapID == pRenderer->field_1036AC_bitmapid ) | 2179 if ( v16->flags & 2 && v16->uTileBitmapID == pRenderer->hd_water_tile_id ) |
2178 { | 2180 { |
2179 v80 = false; | 2181 v80 = false; |
2180 v39 = pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]; | 2182 v39 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; |
2181 } | 2183 } |
2182 else | 2184 else |
2183 { | 2185 { |
2184 v39 = v16->uTileBitmapID; | 2186 v39 = v16->uTileBitmapID; |
2185 v80 = true; | 2187 v80 = true; |
2322 { | 2324 { |
2323 v40->_4811A3(); | 2325 v40->_4811A3(); |
2324 } | 2326 } |
2325 else | 2327 else |
2326 { | 2328 { |
2327 if ( v57 & 2 && v40->uTileBitmapID == pRenderer->field_1036AC_bitmapid ) | 2329 if ( v57 & 2 && v40->uTileBitmapID == pRenderer->hd_water_tile_id ) |
2328 { | 2330 { |
2329 v81 = 0; | 2331 v81 = 0; |
2330 v58 = pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]; | 2332 v58 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; |
2331 } | 2333 } |
2332 else | 2334 else |
2333 { | 2335 { |
2334 v58 = v40->uTileBitmapID; | 2336 v58 = v40->uTileBitmapID; |
2335 v81 = 1; | 2337 v81 = 1; |
2437 { | 2439 { |
2438 LABEL_154: | 2440 LABEL_154: |
2439 v74 = v71->flags; | 2441 v74 = v71->flags; |
2440 if ( !(BYTE1(v74) & 1) ) | 2442 if ( !(BYTE1(v74) & 1) ) |
2441 { | 2443 { |
2442 if ( v74 & 2 && v71->uTileBitmapID == pRenderer->field_1036AC_bitmapid ) | 2444 if ( v74 & 2 && v71->uTileBitmapID == pRenderer->hd_water_tile_id ) |
2443 { | 2445 { |
2444 v80 = false; | 2446 v80 = false; |
2445 v75 = pRenderer->pHDWaterBitmapIDs[pRenderer->field_1036A8_bitmapid]; | 2447 v75 = pRenderer->pHDWaterBitmapIDs[pRenderer->hd_water_current_frame]; |
2446 } | 2448 } |
2447 else | 2449 else |
2448 { | 2450 { |
2449 v75 = v71->uTileBitmapID; | 2451 v75 = v71->uTileBitmapID; |
2450 v80 = true; | 2452 v80 = true; |
4692 LOBYTE(v1->field_103668) = 0; | 4694 LOBYTE(v1->field_103668) = 0; |
4693 v1->field_1036B8 = 0; | 4695 v1->field_1036B8 = 0; |
4694 v1->_gpu_memory_used = 0; | 4696 v1->_gpu_memory_used = 0; |
4695 uNumBillboardsToDraw = 0; | 4697 uNumBillboardsToDraw = 0; |
4696 bFogEnabled = false; | 4698 bFogEnabled = false; |
4699 | |
4700 hd_water_tile_id = -1; | |
4701 hd_water_current_frame = 0; | |
4697 } | 4702 } |
4698 | 4703 |
4699 bool Render::Initialize(bool bWindowed, uint uDefaultDevice, | 4704 bool Render::Initialize(bool bWindowed, uint uDefaultDevice, |
4700 bool bColoredLights, uint uDetailLevel, uint bTinting) | 4705 bool bColoredLights, uint uDetailLevel, uint bTinting) |
4701 { | 4706 { |