Android: temporary aarch64 fix. Move font size it constants, minor cleanup

master
MoNTE48 2019-07-13 22:15:38 +02:00
parent 682e9f90f0
commit 41de61907a
4 changed files with 16 additions and 131 deletions

View File

@ -815,128 +815,6 @@ video::ITexture* TextureSource::generateTextureFromMesh(
video::IVideoDriver *driver = m_device->getVideoDriver();
sanity_check(driver);
#ifdef __ANDROID__
const GLubyte* renderstr = glGetString(GL_RENDERER);
std::string renderer((char*) renderstr);
// use no render to texture hack
if (
//(renderer.find("Adreno") != std::string::npos) ||
//(renderer.find("Mali") != std::string::npos) ||
//(renderer.find("Immersion") != std::string::npos) ||
//(renderer.find("Tegra") != std::string::npos) ||
g_settings->getBool("inventory_image_hack")
) {
// Get a scene manager
scene::ISceneManager *smgr_main = m_device->getSceneManager();
sanity_check(smgr_main);
scene::ISceneManager *smgr = smgr_main->createNewSceneManager();
sanity_check(smgr);
const float scaling = 0.2;
scene::IMeshSceneNode* meshnode =
smgr->addMeshSceneNode(params.mesh, NULL,
-1, v3f(0,0,0), v3f(0,0,0),
v3f(1.0 * scaling,1.0 * scaling,1.0 * scaling), true);
meshnode->setMaterialFlag(video::EMF_LIGHTING, true);
meshnode->setMaterialFlag(video::EMF_ANTI_ALIASING, true);
meshnode->setMaterialFlag(video::EMF_TRILINEAR_FILTER, m_setting_trilinear_filter);
meshnode->setMaterialFlag(video::EMF_BILINEAR_FILTER, m_setting_bilinear_filter);
meshnode->setMaterialFlag(video::EMF_ANISOTROPIC_FILTER, m_setting_anisotropic_filter);
scene::ICameraSceneNode* camera = smgr->addCameraSceneNode(0,
params.camera_position, params.camera_lookat);
// second parameter of setProjectionMatrix (isOrthogonal) is ignored
camera->setProjectionMatrix(params.camera_projection_matrix, false);
smgr->setAmbientLight(params.ambient_light);
smgr->addLightSceneNode(0,
params.light_position,
params.light_color,
params.light_radius*scaling);
core::dimension2d<u32> screen = driver->getScreenSize();
// Render scene
driver->beginScene(true, true, video::SColor(0,0,0,0));
driver->clearZBuffer();
smgr->drawAll();
core::dimension2d<u32> partsize(screen.Width * scaling,screen.Height * scaling);
irr::video::IImage* rawImage =
driver->createImage(irr::video::ECF_A8R8G8B8, partsize);
u8* pixels = static_cast<u8*>(rawImage->lock());
if (!pixels)
{
rawImage->drop();
return NULL;
}
core::rect<s32> source(
screen.Width /2 - (screen.Width * (scaling / 2)),
screen.Height/2 - (screen.Height * (scaling / 2)),
screen.Width /2 + (screen.Width * (scaling / 2)),
screen.Height/2 + (screen.Height * (scaling / 2))
);
glReadPixels(source.UpperLeftCorner.X, source.UpperLeftCorner.Y,
partsize.Width, partsize.Height, GL_RGBA,
GL_UNSIGNED_BYTE, pixels);
driver->endScene();
// Drop scene manager
smgr->drop();
unsigned int pixelcount = partsize.Width*partsize.Height;
u8* runptr = pixels;
for (unsigned int i=0; i < pixelcount; i++) {
u8 B = *runptr;
u8 G = *(runptr+1);
u8 R = *(runptr+2);
u8 A = *(runptr+3);
//BGRA -> RGBA
*runptr = R;
runptr ++;
*runptr = G;
runptr ++;
*runptr = B;
runptr ++;
*runptr = A;
runptr ++;
}
video::IImage* inventory_image =
driver->createImage(irr::video::ECF_A8R8G8B8, params.dim);
rawImage->copyToScaling(inventory_image);
rawImage->drop();
guiScalingCache(io::path(params.rtt_texture_name.c_str()), driver, inventory_image);
video::ITexture *rtt = driver->addTexture(params.rtt_texture_name.c_str(), inventory_image);
inventory_image->drop();
if (rtt == NULL) {
errorstream << "TextureSource::generateTextureFromMesh(): failed to recreate texture from image: " << params.rtt_texture_name << std::endl;
return NULL;
}
driver->makeColorKeyTexture(rtt, v2s32(0,0));
if (params.delete_texture_on_shutdown)
m_texture_trash.push_back(rtt);
return rtt;
}
#endif
if (driver->queryFeature(video::EVDF_RENDER_TO_TARGET) == false)
{
static bool warned = false;

View File

@ -110,9 +110,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
// TODO: implement dpi-based scaling for windows and remove this hack
#if defined(_WIN32)
#define TTF_DEFAULT_FONT_SIZE (18)
#else
#define TTF_DEFAULT_FONT_SIZE (20)
#elif defined(__ANDROID__) || defined(__IOS__)
#define TTF_DEFAULT_FONT_SIZE (16)
#else
#define TTF_DEFAULT_FONT_SIZE (18)
#endif
#define DEFAULT_FONT_SIZE (10)

View File

@ -245,12 +245,8 @@ void set_default_settings(Settings *settings)
settings->setDefault("fallback_font_shadow", "1");
settings->setDefault("fallback_font_shadow_alpha", "128");
#if defined(__ANDROID__) || defined(__IOS__)
std::string font_size_str = std::to_string(TTF_DEFAULT_FONT_SIZE - 3);
#else
std::string font_size_str = std::to_string(TTF_DEFAULT_FONT_SIZE + 2);
#endif
std::string font_size_str = std::to_string(TTF_DEFAULT_FONT_SIZE);
settings->setDefault("fallback_font_size", font_size_str);
#else
@ -377,7 +373,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("enable_console", "false");
settings->setDefault("mainmenu_last_selected_world", "1");
settings->setDefault("inventory_image_hack", "false");
settings->setDefault("mapgens_available", "v7p, flat, v7, v6");
// Mobile Platform
#if defined(__ANDROID__) || defined(__IOS__)
@ -428,6 +424,11 @@ void set_default_settings(Settings *settings)
// set font_path
settings->setDefault("mono_font_path", "/system/fonts/DroidSansMono.ttf");
settings->setDefault("fallback_font_path", "/system/fonts/DroidSans.ttf");
// FIXME: bad solution 'con(62/1)RE-SENDING timed-out RELIABLE to 127.0.0.1(t/o=0.1)'
#ifdef __aarch64__
settings->setDefault("max_packets_per_iteration", "8");
#endif
// check screen size
float x_inches = ((double) porting::getDisplaySize().X /

View File

@ -66,7 +66,11 @@ static inline float CALC_DTIME(u64 lasttime, u64 curtime)
*/
#define MAX_RELIABLE_WINDOW_SIZE 0x8000
/* starting value for window size */
#if defined(__ANDROID__) || defined(__aarch64__)
#define MIN_RELIABLE_WINDOW_SIZE 0x4
#else
#define MIN_RELIABLE_WINDOW_SIZE 0x40
#endif
#define MAX_UDP_PEERS 65535