From 8b9947f9f6e5444eb34f42eecfa5b4cfdeed25d8 Mon Sep 17 00:00:00 2001 From: cutealien Date: Tue, 29 Sep 2020 20:22:28 +0000 Subject: [PATCH] Merging r6128 through r6139 from trunk to ogl-es branch. Note: I could not merge 2 OSX project files as I'm not sure how to correctly resolve their conflicts. Maybe old version for those files are still OK, as ogl-es branch got updated once before (leaving trunk behind). In case it causes problems I hope someone can send another patch for those 2 files: source/Irrlicht/Irrlicht.xcodeproj/xcshareddata/xcschemes source/Irrlicht/Irrlicht.xcodeproj/project.pbxproj git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@6140 dfc29bdd-3216-0410-991c-e03cc46cb475 --- changes.txt | 4 ++ examples/Demo/CDemo.cpp | 7 ++-- include/IGUIStaticText.h | 4 +- include/IVideoDriver.h | 6 ++- include/irrMath.h | 4 +- source/Irrlicht/CBlit.h | 2 +- source/Irrlicht/CIrrDeviceOSX.mm | 14 +++++-- source/Irrlicht/CIrrDeviceWin32.cpp | 8 ++-- source/Irrlicht/COpenGLExtensionHandler.h | 20 ++++++++- source/Irrlicht/CPLYMeshFileLoader.cpp | 49 ++++++++++++----------- source/Irrlicht/CSoftwareDriver2.cpp | 6 +-- source/Irrlicht/CSoftwareTexture2.cpp | 10 ++--- source/Irrlicht/CTRTextureWire2.cpp | 2 +- source/Irrlicht/SoftwareDriver2_helper.h | 44 ++++++++++---------- tools/GUIEditor/GUI Editor_vc14.vcxproj | 2 +- 15 files changed, 107 insertions(+), 75 deletions(-) diff --git a/changes.txt b/changes.txt index 174236aa..74833877 100644 --- a/changes.txt +++ b/changes.txt @@ -9,6 +9,10 @@ Changes in ogl-es (not yet released - will be merged with trunk at some point) -------------------------- Changes in 1.9 (not yet released) +- No longer try to set WM_QUIT when using an external Window on Win32. + Thx @Marko Mahnic for the patch (https://sourceforge.net/p/irrlicht/bugs/449) +- ply meshloader now also supports textures with uv-labels named texture_u/texture_v. + Thx @acy for bugreport and test-model (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=4&t=52646) - Fix potential reading/writing 1 byte behind it's own buffer in PLY loader. Thanks @wolfgang for report and patch (http://irrlicht.sourceforge.net/forum/viewtopic.php?f=7&t=52627&p=305573#p305573) - ICursorControl::isVisible is now always returning the flag set in setVisible. diff --git a/examples/Demo/CDemo.cpp b/examples/Demo/CDemo.cpp index 6c073ab3..b50b6d35 100644 --- a/examples/Demo/CDemo.cpp +++ b/examples/Demo/CDemo.cpp @@ -424,12 +424,13 @@ void CDemo::loadSceneData() model1->setPosition(core::vector3df(100,40,-80)); model1->setScale(core::vector3df(2,2,2)); model1->setMD2Animation(scene::EMAT_STAND); - model1->setMaterialFlag(video::EMF_LIGHTING, false); + model1->setMaterialFlag(video::EMF_LIGHTING, true); + model1->getMaterial(0).Shininess = 40.f; model1->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, true); model1->setMaterialType(video::EMT_SPHERE_MAP); model1->setAutomaticCulling(scene::EAC_OFF); // avoid shadows not updating scene::IShadowVolumeSceneNode * shadVol = model1->addShadowVolumeSceneNode(); - shadVol->setOptimization(scene::ESV_NONE); // Sydney has broken shadows otherwise + if(shadVol) shadVol->setOptimization(scene::ESV_NONE); // Sydney has broken shadows otherwise } model2 = sm->addAnimatedMeshSceneNode(mesh); @@ -443,7 +444,7 @@ void CDemo::loadSceneData() model2->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, true); model2->setAutomaticCulling(scene::EAC_OFF); // avoid shadows not updating scene::IShadowVolumeSceneNode * shadVol = model2->addShadowVolumeSceneNode(); - shadVol->setOptimization(scene::ESV_NONE); // Sydney has broken shadows otherwise + if (shadVol) shadVol->setOptimization(scene::ESV_NONE); // Sydney has broken shadows otherwise } } diff --git a/include/IGUIStaticText.h b/include/IGUIStaticText.h index b55bd95d..beb8f597 100644 --- a/include/IGUIStaticText.h +++ b/include/IGUIStaticText.h @@ -85,8 +85,8 @@ namespace gui //! Sets text justification mode /** \param horizontal: EGUIA_UPPERLEFT for left justified (default), EGUIA_LOWEERRIGHT for right justified, or EGUIA_CENTER for centered text. - \param vertical: EGUIA_UPPERLEFT to align with top edge, - EGUIA_LOWEERRIGHT for bottom edge, or EGUIA_CENTER for centered text (default). */ + \param vertical: EGUIA_UPPERLEFT to align with top edge (default), + EGUIA_LOWEERRIGHT for bottom edge, or EGUIA_CENTER for centered text. */ virtual void setTextAlignment(EGUI_ALIGNMENT horizontal, EGUI_ALIGNMENT vertical) = 0; //! Enables or disables word wrap for using the static text as multiline text control. diff --git a/include/IVideoDriver.h b/include/IVideoDriver.h index a8031afc..4b0c277e 100644 --- a/include/IVideoDriver.h +++ b/include/IVideoDriver.h @@ -382,7 +382,9 @@ namespace video \param format The color format of the render target. Floating point formats are supported. \return Pointer to the created texture or 0 if the texture could not be created. This pointer should not be dropped. See - IReferenceCounted::drop() for more information. */ + IReferenceCounted::drop() for more information. + You may want to remove it from driver texture cache with removeTexture if you no longer need it. + */ virtual ITexture* addRenderTargetTexture(const core::dimension2d& size, const io::path& name = "rt", const ECOLOR_FORMAT format = ECF_UNKNOWN) =0; @@ -1476,7 +1478,7 @@ namespace video other flags can be changed, though some might have to effect in most cases. Please note that you have to enable/disable this effect with - enableInitMaterial2D(). This effect is costly, as it increases + enableMaterial2D(). This effect is costly, as it increases the number of state changes considerably. Always reset the values when done. \return Material reference which should be altered to reflect diff --git a/include/irrMath.h b/include/irrMath.h index b97e270b..94eda174 100644 --- a/include/irrMath.h +++ b/include/irrMath.h @@ -243,7 +243,7 @@ namespace core //! returns if a equals b, taking possible rounding errors into account template - inline bool equals(const T a, const T b, const T tolerance = roundingError()) + inline bool equals(const T a, const T b, const T tolerance = roundingError()) { return (a + tolerance >= b) && (a - tolerance <= b); } @@ -633,7 +633,7 @@ namespace core return rec; */ /* - register u32 x = 0x7F000000 - IR ( p ); + u32 x = 0x7F000000 - IR ( p ); const f32 r = FR ( x ); return r * (2.0f - p * r); */ diff --git a/source/Irrlicht/CBlit.h b/source/Irrlicht/CBlit.h index b7788289..c2fcf775 100644 --- a/source/Irrlicht/CBlit.h +++ b/source/Irrlicht/CBlit.h @@ -878,7 +878,7 @@ static void executeBlit_TextureBlendColor_16_to_16( const SBlitJob * job ) f18 src_x = f18_zero; for (u32 dx = 0; dx < job->width; ++dx, src_x += wscale) { - register u16 c0 = src[f18_floor(src_x)]; + u16 c0 = src[f18_floor(src_x)]; if (0 == (c0 & 0x8000)) continue; diff --git a/source/Irrlicht/CIrrDeviceOSX.mm b/source/Irrlicht/CIrrDeviceOSX.mm index 1e956c60..c709adb5 100644 --- a/source/Irrlicht/CIrrDeviceOSX.mm +++ b/source/Irrlicht/CIrrDeviceOSX.mm @@ -862,10 +862,16 @@ void CIrrDeviceMacOSX::createDriver() os::Printer::log("Could not create OpenGL driver.", ELL_ERROR); } - if (Window) - [(NSOpenGLContext*)ContextManager->getContext().OpenGLOSX.Context setView:[Window contentView]]; - else - [(NSOpenGLContext*)ContextManager->getContext().OpenGLOSX.Context setView:(NSView*)CreationParams.WindowId]; + if (Window) + { + [[Window contentView] setWantsBestResolutionOpenGLSurface:NO]; + [(NSOpenGLContext*)ContextManager->getContext().OpenGLOSX.Context setView:[Window contentView]]; + } + else + { + [(NSView*)CreationParams.WindowId setWantsBestResolutionOpenGLSurface:NO]; + [(NSOpenGLContext*)ContextManager->getContext().OpenGLOSX.Context setView:(NSView*)CreationParams.WindowId]; + } #ifndef __MAC_10_6 CGLContextObj CGLContext = (CGLContextObj)[(NSOpenGLContext*)ContextManager->getContext().OpenGLOSX.Context CGLContextObj]; diff --git a/source/Irrlicht/CIrrDeviceWin32.cpp b/source/Irrlicht/CIrrDeviceWin32.cpp index 270be368..f53a76db 100644 --- a/source/Irrlicht/CIrrDeviceWin32.cpp +++ b/source/Irrlicht/CIrrDeviceWin32.cpp @@ -1400,12 +1400,12 @@ bool CIrrDeviceWin32::present(video::IImage* image, void* windowId, core::rectgetIndexBuffer().push_back(a); @@ -383,19 +386,19 @@ bool CPLYMeshFileLoader::readFace(const SPLYElement &Element, scene::CDynamicMes for (; j < count; ++j) { b = c; - c = getInt(Element.Properties[i].Data.List.ItemType); + c = getInt(property.Data.List.ItemType); mb->getIndexBuffer().push_back(a); mb->getIndexBuffer().push_back(c); mb->getIndexBuffer().push_back(b); } } - else if (Element.Properties[i].Name == "intensity") + else if (property.Name == "intensity") { // todo: face intensity - skipProperty(Element.Properties[i]); + skipProperty(property); } else - skipProperty(Element.Properties[i]); + skipProperty(property); } return true; } diff --git a/source/Irrlicht/CSoftwareDriver2.cpp b/source/Irrlicht/CSoftwareDriver2.cpp index 89f0f7b5..5ab2fb98 100644 --- a/source/Irrlicht/CSoftwareDriver2.cpp +++ b/source/Irrlicht/CSoftwareDriver2.cpp @@ -894,7 +894,7 @@ const sVec4 CBurningVideoDriver::NDCPlane[6+2] = REALINLINE size_t CBurningVideoDriver::clipToFrustumTest ( const s4DVertex* v ) const { - register size_t flag; + size_t flag; f32 test[8]; const f32 w = - v->Pos.w; @@ -2238,8 +2238,8 @@ void CBurningVideoDriver::drawVertexPrimitiveList(const void* vertices, u32 vert //collect pointer to face vertices VertexCache_get(face); - register size_t clipMask_i; - register size_t clipMask_o; + size_t clipMask_i; + size_t clipMask_o; clipMask_i = face[0]->flag; clipMask_o = face[0]->flag; diff --git a/source/Irrlicht/CSoftwareTexture2.cpp b/source/Irrlicht/CSoftwareTexture2.cpp index b17e462d..29febe1e 100644 --- a/source/Irrlicht/CSoftwareTexture2.cpp +++ b/source/Irrlicht/CSoftwareTexture2.cpp @@ -85,7 +85,7 @@ CSoftwareTexture2::CSoftwareTexture2(IImage* image, const io::path& name, u32 fl MipMap[0] = new CImage(BURNINGSHADER_COLOR_FORMAT, image->getDimension()); #if defined(IRRLICHT_sRGB) MipMap[0]->set_sRGB( (Flags & TEXTURE_IS_LINEAR ) ? 0 : image->get_sRGB() ); -#endif +#endif if (!isCompressed) image->copyTo(MipMap[0]); } @@ -241,14 +241,14 @@ void CSoftwareTexture2::regenerateMipMapLevels(void* data) for (i=1; i < 0 && i < SOFTWARE_DRIVER_2_MIPMAPPING_MAX; ++i) { /* - static u32 color[] = { + static u32 color[] = { 0x30bf7f00,0x3040bf00,0x30bf00bf,0x3000bf00, 0x300080bf,0x30bf4000,0x300040bf,0x307f00bf, 0x30bf0000,0x3000bfbf,0x304000bf,0x307fbf00, 0x8000bf7f,0x80bf0040,0x80bfbf00,0x800000bf }; */ - static u32 color[] = { + static u32 color[] = { 0xFFFFFFFF,0xFFFF0000,0xFF00FF00,0xFF0000FF, 0xFFFFFF00,0xFF00FFFF,0xFFFF00FF,0xFF0000FF, 0xFF0000FF,0xFF0000FF,0xFF0000FF,0xFF0000FF, @@ -473,9 +473,9 @@ u32 linear_to_srgb_8bit(const float v) { ieee754 c; c.f = v; - const register size_t x = c.u; + const size_t x = c.u; const u32 *table = (u32*)srgb_8bit_to_linear_float; - register u32 y = 0; + u32 y = 0; y += table[y + 128] <= x ? 128 : 0; y += table[y + 64] <= x ? 64 : 0; y += table[y + 32] <= x ? 32 : 0; diff --git a/source/Irrlicht/CTRTextureWire2.cpp b/source/Irrlicht/CTRTextureWire2.cpp index b77b788f..61a42274 100644 --- a/source/Irrlicht/CTRTextureWire2.cpp +++ b/source/Irrlicht/CTRTextureWire2.cpp @@ -158,7 +158,7 @@ void CTRTextureWire2::renderLine ( const s4DVertex *a,const s4DVertex *b, int re if ( dy > dx ) { //swap - register s32 t; + s32 t; t = dx;dx=dy;dy=t; t = xInc0;xInc0=yInc0;yInc0=t; #ifdef USE_ZBUFFER diff --git a/source/Irrlicht/SoftwareDriver2_helper.h b/source/Irrlicht/SoftwareDriver2_helper.h index a8979262..433ea457 100644 --- a/source/Irrlicht/SoftwareDriver2_helper.h +++ b/source/Irrlicht/SoftwareDriver2_helper.h @@ -182,7 +182,7 @@ static inline s32 s32_log2_s32(u32 in) } return ret; //return s32_log2_f32( (f32) x); - //ieee754 _log2;_log2.f = (f32) in; return _log2.fields.exp - 127; + //ieee754 _log2;_log2.f = (f32) in; return _log2.fields.exp - 127; } #if 0 @@ -599,11 +599,11 @@ REALINLINE tFixPoint imulFix_tex2(const tFixPoint x, const tFixPoint y) REALINLINE tFixPoint imulFix_tex4(const tFixPoint x, const tFixPoint y) { #ifdef SOFTWARE_DRIVER_2_32BIT - register tFixPoint a = (((tFixPointu)x >> 2)*(((tFixPointu)y + FIX_POINT_ONE) >> 2)) >> (tFixPointu)(FIX_POINT_PRE + 2); + tFixPoint a = (((tFixPointu)x >> 2)*(((tFixPointu)y + FIX_POINT_ONE) >> 2)) >> (tFixPointu)(FIX_POINT_PRE + 2); #else - register tFixPoint a = (x * (y + FIX_POINT_ONE)) >> (FIX_POINT_PRE + 3); + tFixPoint a = (x * (y + FIX_POINT_ONE)) >> (FIX_POINT_PRE + 3); #endif - register tFixPoint mask = (a - FIXPOINT_COLOR_MAX) >> 31; + tFixPoint mask = (a - FIXPOINT_COLOR_MAX) >> 31; return (a & mask) | (FIXPOINT_COLOR_MAX & ~mask); } @@ -624,7 +624,7 @@ REALINLINE tFixPoint imulFix_tex4(const tFixPoint x, const tFixPoint y) */ REALINLINE tFixPoint clampfix_maxcolor ( const tFixPoint a) { - register tFixPoint c = (a - FIXPOINT_COLOR_MAX) >> 31; + tFixPoint c = (a - FIXPOINT_COLOR_MAX) >> 31; return (a & c) | ( FIXPOINT_COLOR_MAX & ~c); } @@ -828,7 +828,7 @@ struct sInternalTexture // get video sample plain static inline tVideoSample getTexel_plain ( const sInternalTexture* t, const tFixPointu tx, const tFixPointu ty ) { - register size_t ofs; + size_t ofs; ofs = ( ( ty & t->textureYMask ) >> FIX_POINT_PRE ) << t->pitchlog2; ofs |= ( tx & t->textureXMask ) >> ( FIX_POINT_PRE - VIDEO_SAMPLE_GRANULARITY ); @@ -842,13 +842,13 @@ inline void getTexel_fix ( tFixPoint &r, tFixPoint &g, tFixPoint &b, const sInternalTexture* t, const tFixPointu tx, const tFixPointu ty ) { - register size_t ofs; + size_t ofs; ofs = ( ((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask ) >> FIX_POINT_PRE ) << t->pitchlog2; ofs |= ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask ) >> ( FIX_POINT_PRE - VIDEO_SAMPLE_GRANULARITY ); // texel - register tVideoSample t00; + tVideoSample t00; t00 = *((tVideoSample*)( (u8*) t->data + ofs )); r = (t00 & MASK_R) >> ( SHIFT_R - FIX_POINT_PRE); @@ -862,13 +862,13 @@ inline void getTexel_fix(tFixPoint &a, tFixPoint &r, tFixPoint &g, tFixPoint &b, const sInternalTexture* t, const tFixPointu tx, const tFixPointu ty ) { - register size_t ofs; + size_t ofs; ofs = (((ty+ FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2; ofs |= ((tx+ FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask) >> (FIX_POINT_PRE - VIDEO_SAMPLE_GRANULARITY); // texel - register tVideoSample t00; + tVideoSample t00; t00 = *((tVideoSample*)((u8*)t->data + ofs)); a = (t00 & MASK_A) >> (SHIFT_A - FIX_POINT_PRE); @@ -910,7 +910,7 @@ static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint & #if 0 if (t->lodFactor > 0) { - register size_t ofs; + size_t ofs; ofs = (((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2; ofs += ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask) >> (FIX_POINT_PRE - VIDEO_SAMPLE_GRANULARITY); @@ -932,7 +932,7 @@ static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint & tFixPointu r11, g11, b11; size_t o0, o1, o2, o3; - register tVideoSample t00; + tVideoSample t00; //wraps positive (ignoring negative) o0 = (((ty)& t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2; @@ -961,8 +961,8 @@ static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint & b11 = (t00 & MASK_B); - register tFixPointu fracx = tx & FIX_POINT_FRACT_MASK; - register tFixPointu fracy = ty & FIX_POINT_FRACT_MASK; + tFixPointu fracx = tx & FIX_POINT_FRACT_MASK; + tFixPointu fracy = ty & FIX_POINT_FRACT_MASK; //w00 w01 w10 w11 tFixPointu w[4]; @@ -999,11 +999,11 @@ static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint & if (tex->lodFactor > 1) { //nearest neighbor - register size_t ofs; + size_t ofs; ofs = (((ty + FIX_POINT_ZERO_DOT_FIVE) & tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2; ofs += ((tx + FIX_POINT_ZERO_DOT_FIVE) & tex->textureXMask) >> (FIX_POINT_PRE - VIDEO_SAMPLE_GRANULARITY); - register tVideoSample t00; + tVideoSample t00; t00 = *((tVideoSample*)((u8*)tex->data + ofs)); r = (t00 & MASK_R) >> (SHIFT_R - FIX_POINT_PRE); @@ -1015,8 +1015,8 @@ static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint & //w00 w01 w10 w11 tFixPointu w[4]; { - register tFixPointu fracx = tx & FIX_POINT_FRACT_MASK; - register tFixPointu fracy = ty & FIX_POINT_FRACT_MASK; + tFixPointu fracx = tx & FIX_POINT_FRACT_MASK; + tFixPointu fracy = ty & FIX_POINT_FRACT_MASK; w[0] = imulFixu(FIX_POINT_ONE - fracx, FIX_POINT_ONE - fracy); w[1] = imulFixu(fracx, FIX_POINT_ONE - fracy); w[2] = imulFixu(FIX_POINT_ONE - fracx, fracy); @@ -1026,7 +1026,7 @@ static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint & //wraps positive (ignoring negative) tVideoSample t[4]; { - register size_t o0, o1, o2, o3; + size_t o0, o1, o2, o3; o0 = (((ty) & tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2; o1 = (((ty + FIX_POINT_ONE) & tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2; o2 = ((tx)& tex->textureXMask) >> (unsigned)(FIX_POINT_PRE - VIDEO_SAMPLE_GRANULARITY); @@ -1068,7 +1068,7 @@ static REALINLINE void getSample_texture(tFixPoint &a, tFixPoint &r, tFixPoint & tFixPointu a11, r11, g11, b11; size_t o0, o1, o2, o3; - register tVideoSample t00; + tVideoSample t00; o0 = (((ty)& tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2; o1 = (((ty + FIX_POINT_ONE) & tex->textureYMask) >> FIX_POINT_PRE) << tex->pitchlog2; @@ -1142,7 +1142,7 @@ static REALINLINE void getSample_texture(tFixPoint &r, tFixPoint &g, tFixPoint & const sInternalTexture* burning_restrict t, const tFixPointu tx, const tFixPointu ty ) { - register size_t ofs; + size_t ofs; ofs = (((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2; ofs += ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask) >> (FIX_POINT_PRE - VIDEO_SAMPLE_GRANULARITY); @@ -1158,7 +1158,7 @@ static REALINLINE void getSample_texture(tFixPoint &a, tFixPoint &r, tFixPoint & const sInternalTexture* burning_restrict t, const tFixPointu tx, const tFixPointu ty ) { - register size_t ofs; + size_t ofs; ofs = (((ty + FIX_POINT_ZERO_DOT_FIVE) & t->textureYMask) >> FIX_POINT_PRE) << t->pitchlog2; ofs += ((tx + FIX_POINT_ZERO_DOT_FIVE) & t->textureXMask) >> (FIX_POINT_PRE - VIDEO_SAMPLE_GRANULARITY); diff --git a/tools/GUIEditor/GUI Editor_vc14.vcxproj b/tools/GUIEditor/GUI Editor_vc14.vcxproj index e84a01b4..f9889efb 100644 --- a/tools/GUIEditor/GUI Editor_vc14.vcxproj +++ b/tools/GUIEditor/GUI Editor_vc14.vcxproj @@ -169,7 +169,7 @@ ProgramDatabase - ../../bin/Win32-visualstudio/GUIEditor.exe + ../../bin/Win64-visualstudio/GUIEditor.exe ..\..\lib\Win64-visualstudio;%(AdditionalLibraryDirectories) true Console