Unify OpenGL ES support

This commit is contained in:
sfan5 2019-07-25 00:01:25 +02:00
parent 526a9e4b66
commit ca363d3ef8
8 changed files with 39 additions and 21 deletions

View File

@ -65,6 +65,7 @@ endif
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ \ LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ \
-DHAVE_TOUCHSCREENGUI \ -DHAVE_TOUCHSCREENGUI \
-DENABLE_GLES=1 \
-DUSE_CURL=1 \ -DUSE_CURL=1 \
-DUSE_SOUND=1 \ -DUSE_SOUND=1 \
-DUSE_FREETYPE=1 \ -DUSE_FREETYPE=1 \

View File

@ -48,7 +48,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#endif #endif
#ifdef __ANDROID__ #if ENABLE_GLES
#include "filesys.h" #include "filesys.h"
#endif #endif
@ -131,6 +131,11 @@ RenderingEngine::RenderingEngine(IEventReceiver *receiver)
params.OGLES2ShaderPath = std::string(porting::path_user + DIR_DELIM + "media" + params.OGLES2ShaderPath = std::string(porting::path_user + DIR_DELIM + "media" +
DIR_DELIM + "Shaders" + DIR_DELIM).c_str(); DIR_DELIM + "Shaders" + DIR_DELIM).c_str();
// clang-format on // clang-format on
#elif ENABLE_GLES
// there is no standardized path for these on desktop
std::string rel_path = std::string("client") + DIR_DELIM
+ "shaders" + DIR_DELIM + "Irrlicht";
params.OGLES2ShaderPath = (porting::path_share + DIR_DELIM + rel_path + DIR_DELIM).c_str();
#endif #endif
m_device = createDeviceEx(params); m_device = createDeviceEx(params);

View File

@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "client/renderingengine.h" #include "client/renderingengine.h"
#include "settings.h" #include "settings.h"
#include "camera.h" // CameraModes #include "camera.h" // CameraModes
#include "config.h"
Sky::Sky(s32 id, ITextureSource *tsrc): Sky::Sky(s32 id, ITextureSource *tsrc):
@ -44,7 +45,7 @@ Sky::Sky(s32 id, ITextureSource *tsrc):
video::SMaterial mat; video::SMaterial mat;
mat.Lighting = false; mat.Lighting = false;
#ifdef __ANDROID__ #if ENABLE_GLES
mat.ZBuffer = video::ECFN_DISABLED; mat.ZBuffer = video::ECFN_DISABLED;
#else #else
mat.ZBuffer = video::ECFN_NEVER; mat.ZBuffer = video::ECFN_NEVER;
@ -273,7 +274,7 @@ void Sky::render()
// Stars are only drawn when brighter than skycolor // Stars are only drawn when brighter than skycolor
if (starcolor.getBlue() < m_skycolor.getBlue()) if (starcolor.getBlue() < m_skycolor.getBlue())
break; break;
#ifdef __ANDROID__ #if ENABLE_GLES
u16 indices[SKY_STAR_COUNT * 3]; u16 indices[SKY_STAR_COUNT * 3];
video::S3DVertex vertices[SKY_STAR_COUNT * 3]; video::S3DVertex vertices[SKY_STAR_COUNT * 3];
for (u32 i = 0; i < SKY_STAR_COUNT; i++) { for (u32 i = 0; i < SKY_STAR_COUNT; i++) {

View File

@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <algorithm> #include <algorithm>
#include <ICameraSceneNode.h> #include <ICameraSceneNode.h>
#include <IrrCompileConfig.h>
#include "util/string.h" #include "util/string.h"
#include "util/container.h" #include "util/container.h"
#include "util/thread.h" #include "util/thread.h"
@ -34,8 +35,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "renderingengine.h" #include "renderingengine.h"
#ifdef __ANDROID__ #if ENABLE_GLES
#ifdef _IRR_COMPILE_WITH_OGLES1_
#include <GLES/gl.h> #include <GLES/gl.h>
#else
#include <GLES2/gl2.h>
#endif
#endif #endif
/* /*
@ -595,7 +600,7 @@ u32 TextureSource::generateTexture(const std::string &name)
video::ITexture *tex = NULL; video::ITexture *tex = NULL;
if (img != NULL) { if (img != NULL) {
#ifdef __ANDROID__ #if ENABLE_GLES
img = Align2Npot2(img, driver); img = Align2Npot2(img, driver);
#endif #endif
// Create texture from resulting image // Create texture from resulting image
@ -752,7 +757,7 @@ void TextureSource::rebuildImagesAndTextures()
// Recreate textures // Recreate textures
for (TextureInfo &ti : m_textureinfo_cache) { for (TextureInfo &ti : m_textureinfo_cache) {
video::IImage *img = generateImage(ti.name); video::IImage *img = generateImage(ti.name);
#ifdef __ANDROID__ #if ENABLE_GLES
img = Align2Npot2(img, driver); img = Align2Npot2(img, driver);
#endif #endif
// Create texture from resulting image // Create texture from resulting image
@ -989,8 +994,7 @@ video::IImage* TextureSource::generateImage(const std::string &name)
return baseimg; return baseimg;
} }
#ifdef __ANDROID__ #if ENABLE_GLES
#include <GLES/gl.h>
/** /**
* Check and align image to npot2 if required by hardware * Check and align image to npot2 if required by hardware
* @param image image to check for npot2 alignment * @param image image to check for npot2 alignment
@ -998,7 +1002,7 @@ video::IImage* TextureSource::generateImage(const std::string &name)
* @return image or copy of image aligned to npot2 * @return image or copy of image aligned to npot2
*/ */
inline u16 get_GL_major_version() static inline u16 get_GL_major_version()
{ {
const GLubyte *gl_version = glGetString(GL_VERSION); const GLubyte *gl_version = glGetString(GL_VERSION);
return (u16) (gl_version[0] - '0'); return (u16) (gl_version[0] - '0');
@ -1078,7 +1082,7 @@ bool TextureSource::generateImagePart(std::string part_of_name,
// Stuff starting with [ are special commands // Stuff starting with [ are special commands
if (part_of_name.empty() || part_of_name[0] != '[') { if (part_of_name.empty() || part_of_name[0] != '[') {
video::IImage *image = m_sourcecache.getOrLoad(part_of_name); video::IImage *image = m_sourcecache.getOrLoad(part_of_name);
#ifdef __ANDROID__ #if ENABLE_GLES
image = Align2Npot2(image, driver); image = Align2Npot2(image, driver);
#endif #endif
if (image == NULL) { if (image == NULL) {

View File

@ -27,8 +27,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <SMaterial.h> #include <SMaterial.h>
#include <memory> #include <memory>
#include "util/numeric.h" #include "util/numeric.h"
#include "config.h"
#if __ANDROID__ #if ENABLE_GLES
#include <IVideoDriver.h> #include <IVideoDriver.h>
#endif #endif
@ -133,7 +134,7 @@ public:
IWritableTextureSource *createTextureSource(); IWritableTextureSource *createTextureSource();
#ifdef __ANDROID__ #if ENABLE_GLES
video::IImage * Align2Npot2(video::IImage * image, irr::video::IVideoDriver* driver); video::IImage * Align2Npot2(video::IImage * image, irr::video::IVideoDriver* driver);
#endif #endif

View File

@ -17,6 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/ */
#include <IrrCompileConfig.h>
#include "settings.h" #include "settings.h"
#include "porting.h" #include "porting.h"
#include "filesys.h" #include "filesys.h"
@ -182,7 +183,15 @@ void set_default_settings(Settings *settings)
settings->setDefault("lighting_boost_spread", "0.2"); settings->setDefault("lighting_boost_spread", "0.2");
settings->setDefault("texture_path", ""); settings->setDefault("texture_path", "");
settings->setDefault("shader_path", ""); settings->setDefault("shader_path", "");
#if ENABLE_GLES
#ifdef _IRR_COMPILE_WITH_OGLES1_
settings->setDefault("video_driver", "ogles1");
#else
settings->setDefault("video_driver", "ogles2");
#endif
#else
settings->setDefault("video_driver", "opengl"); settings->setDefault("video_driver", "opengl");
#endif
settings->setDefault("cinematic", "false"); settings->setDefault("cinematic", "false");
settings->setDefault("camera_smoothing", "0"); settings->setDefault("camera_smoothing", "0");
settings->setDefault("cinematic_camera_smoothing", "0.7"); settings->setDefault("cinematic_camera_smoothing", "0.7");
@ -217,7 +226,11 @@ void set_default_settings(Settings *settings)
settings->setDefault("texture_clean_transparent", "false"); settings->setDefault("texture_clean_transparent", "false");
settings->setDefault("texture_min_size", "64"); settings->setDefault("texture_min_size", "64");
settings->setDefault("ambient_occlusion_gamma", "2.2"); settings->setDefault("ambient_occlusion_gamma", "2.2");
#if ENABLE_GLES
settings->setDefault("enable_shaders", "false");
#else
settings->setDefault("enable_shaders", "true"); settings->setDefault("enable_shaders", "true");
#endif
settings->setDefault("enable_particles", "true"); settings->setDefault("enable_particles", "true");
settings->setDefault("arm_inertia", "true"); settings->setDefault("arm_inertia", "true");
@ -429,9 +442,7 @@ void set_default_settings(Settings *settings)
#ifdef __ANDROID__ #ifdef __ANDROID__
settings->setDefault("screen_w", "0"); settings->setDefault("screen_w", "0");
settings->setDefault("screen_h", "0"); settings->setDefault("screen_h", "0");
settings->setDefault("enable_shaders", "false");
settings->setDefault("fullscreen", "true"); settings->setDefault("fullscreen", "true");
settings->setDefault("video_driver", "ogles1");
settings->setDefault("touchtarget", "true"); settings->setDefault("touchtarget", "true");
settings->setDefault("TMPFolder", porting::getDataPath("tmp" DIR_DELIM)); settings->setDefault("TMPFolder", porting::getDataPath("tmp" DIR_DELIM));
settings->setDefault("touchscreen_threshold","20"); settings->setDefault("touchscreen_threshold","20");

View File

@ -39,9 +39,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "client/guiscalingfilter.h" #include "client/guiscalingfilter.h"
#include "irrlicht_changes/static_text.h" #include "irrlicht_changes/static_text.h"
#ifdef __ANDROID__ #if ENABLE_GLES
#include "client/tile.h" #include "client/tile.h"
#include <GLES/gl.h>
#endif #endif
@ -78,7 +77,7 @@ video::ITexture *MenuTextureSource::getTexture(const std::string &name, u32 *id)
m_to_delete.insert(name); m_to_delete.insert(name);
#ifdef __ANDROID__ #if ENABLE_GLES
video::ITexture *retval = m_driver->findTexture(name.c_str()); video::ITexture *retval = m_driver->findTexture(name.c_str());
if (retval) if (retval)
return retval; return retval;

View File

@ -38,10 +38,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <map> #include <map>
#include <set> #include <set>
#ifdef __ANDROID__
#include <GLES/gl.h>
#endif
/* /*
ItemDefinition ItemDefinition
*/ */