diff --git a/Extensions/olcPGEX_Graphics3D.h b/Extensions/olcPGEX_Graphics3D.h index f3f6b97..46819d8 100644 --- a/Extensions/olcPGEX_Graphics3D.h +++ b/Extensions/olcPGEX_Graphics3D.h @@ -61,7 +61,7 @@ Author ~~~~~~ - David Barr, aka javidx9, ©OneLoneCoder 2018 + David Barr, aka javidx9, ©OneLoneCoder 2018 */ @@ -259,7 +259,7 @@ namespace olc //inline static void DrawSprite(olc::Sprite *sprite, olc::GFX2D::Transform2D &transform); private: - static float* m_DepthBuffer; + static std::vector m_DepthBuffer; }; } @@ -845,17 +845,17 @@ namespace olc } - float* GFX3D::m_DepthBuffer = nullptr; + std::vector GFX3D::m_DepthBuffer; void GFX3D::ConfigureDisplay() { - m_DepthBuffer = new float[pge->ScreenWidth() * pge->ScreenHeight()]{ 0 }; + m_DepthBuffer.resize(pge->ScreenWidth() * pge->ScreenHeight()); } void GFX3D::ClearDepth() { - memset(m_DepthBuffer, 0, pge->ScreenWidth() * pge->ScreenHeight() * sizeof(float)); + std::fill(m_DepthBuffer.begin(), m_DepthBuffer.end(), 0); } bool GFX3D::mesh::LoadOBJFile(std::string sFilename, bool bHasTexture) @@ -1525,7 +1525,9 @@ namespace olc if (nFlags & GFX3D::RENDER_DEPTH) { - if (tex_w > m_DepthBuffer[i*pge->ScreenWidth() + j]) + if (m_DepthBuffer.size() <= i * pge->ScreenWidth() + j) + pge->Draw(j, i, olc::BLACK); + else if (tex_w > m_DepthBuffer[i*pge->ScreenWidth() + j]) if (pge->Draw(j, i, olc::Pixel(uint8_t(pixel_r * 1.0f), uint8_t(pixel_g * 1.0f), uint8_t(pixel_b * 1.0f), uint8_t(pixel_a * 1.0f)))) m_DepthBuffer[i*pge->ScreenWidth() + j] = tex_w; } @@ -1640,7 +1642,9 @@ namespace olc if (nFlags & GFX3D::RENDER_DEPTH) { - if (tex_w > m_DepthBuffer[i*pge->ScreenWidth() + j]) + if (m_DepthBuffer.size() <= i * pge->ScreenWidth() + j) + pge->Draw(j, i, olc::BLACK); + else if (tex_w > m_DepthBuffer[i*pge->ScreenWidth() + j]) if (pge->Draw(j, i, olc::Pixel(uint8_t(pixel_r * 1.0f), uint8_t(pixel_g * 1.0f), uint8_t(pixel_b * 1.0f), uint8_t(pixel_a * 1.0f)))) m_DepthBuffer[i*pge->ScreenWidth() + j] = tex_w; } @@ -1722,4 +1726,4 @@ namespace olc } -#endif \ No newline at end of file +#endif