diff options
author | stujones11 <stujones111@gmail.com> | 2018-08-04 18:46:39 +0100 |
---|---|---|
committer | Paramat <paramat@users.noreply.github.com> | 2018-08-04 18:46:39 +0100 |
commit | c5a137c29c455d05de971b1447349346b16a8793 (patch) | |
tree | 81863f3f4320f1dc499500a2fe58acca0ebd99c5 | |
parent | 3b9d49b3c7607cf5f01c7b169f84e312eb0fd99d (diff) | |
download | minetest-c5a137c29c455d05de971b1447349346b16a8793.tar.gz minetest-c5a137c29c455d05de971b1447349346b16a8793.tar.bz2 minetest-c5a137c29c455d05de971b1447349346b16a8793.zip |
Fix sky objects not rendering with ogles (#7598)
-rw-r--r-- | src/sky.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/sky.cpp b/src/sky.cpp index 6ac27afc4..fb4f135a5 100644 --- a/src/sky.cpp +++ b/src/sky.cpp @@ -44,7 +44,11 @@ Sky::Sky(s32 id, ITextureSource *tsrc): video::SMaterial mat; mat.Lighting = false; +#ifdef __ANDROID__ + mat.ZBuffer = video::ECFN_DISABLED; +#else mat.ZBuffer = video::ECFN_NEVER; +#endif mat.ZWriteEnable = false; mat.AntiAliasing = 0; mat.TextureLayer[0].TextureWrapU = video::ETC_CLAMP_TO_EDGE; @@ -449,6 +453,34 @@ void Sky::render() video::SColor starcolor(255, f * 90, f * 90, f * 90); if (starcolor.getBlue() < m_skycolor.getBlue()) break; +#ifdef __ANDROID__ + u16 indices[SKY_STAR_COUNT * 3]; + video::S3DVertex vertices[SKY_STAR_COUNT * 3]; + for (u32 i = 0; i < SKY_STAR_COUNT; i++) { + indices[i * 3 + 0] = i * 3 + 0; + indices[i * 3 + 1] = i * 3 + 1; + indices[i * 3 + 2] = i * 3 + 2; + v3f p = m_stars[i]; + core::CMatrix4<f32> a; + a.buildRotateFromTo(v3f(0, 1, 0), v3f(d, 1 + d, -d / 2)); + v3f p1 = p; + a.rotateVect(p1); + a.buildRotateFromTo(v3f(0, 1, 0), v3f(d, 1 - d, d / 2)); + v3f p2 = p; + a.rotateVect(p2); + p.rotateXYBy(wicked_time_of_day * 360 - 90); + p1.rotateXYBy(wicked_time_of_day * 360 - 90); + p2.rotateXYBy(wicked_time_of_day * 360 - 90); + vertices[i * 3 + 0].Pos = p; + vertices[i * 3 + 0].Color = starcolor; + vertices[i * 3 + 1].Pos = p1; + vertices[i * 3 + 1].Color = starcolor; + vertices[i * 3 + 2].Pos = p2; + vertices[i * 3 + 2].Color = starcolor; + } + driver->drawIndexedTriangleList(vertices, SKY_STAR_COUNT * 3, + indices, SKY_STAR_COUNT); +#else u16 indices[SKY_STAR_COUNT * 4]; video::S3DVertex vertices[SKY_STAR_COUNT * 4]; for (u32 i = 0; i < SKY_STAR_COUNT; i++) { @@ -483,6 +515,7 @@ void Sky::render() driver->drawVertexPrimitiveList(vertices, SKY_STAR_COUNT * 4, indices, SKY_STAR_COUNT, video::EVT_STANDARD, scene::EPT_QUADS, video::EIT_16BIT); +#endif } while(false); // Draw far cloudy fog thing below east and west horizons |