Утверждение UE4 не удалось в opengles.h, но я знаю, что ue4 работает на моем устройстве. Как это исправить?

#android #opengl-es #unreal-engine4

Вопрос:

Я могу запустить PUBG MOBILE (и ОБЛЕГЧЕННУЮ версию тоже) на своем устройстве sm-j700m samsung galaxy j7 2015.
Pubg использует Unreal Engine 4!
Установлена здесь версия редактора UE4: 4.26.2

В настройках проекта включена опция «Поддержка OpenGL ES3.1».

Некоторый код движка по этой ссылке показывает, в чем именно заключалась проблема при проверке():
https://forums.unrealengine.com/t/4-25-apk-runs-fine-4-26-1-apk-crash/158698/4

 static FORCEINLINE void ColorMaskIndexed(GLuint Index, GLboolean Red, GLboolean Green, GLboolean Blue, GLboolean Alpha)
{
if (bSupportsDrawBuffersBlend)
            {
                // ES 3.2 or extension
                glColorMaskiEXT(Index, Red, Green, Blue, Alpha);
            }
            else
            {
                check(Index == 0);
                glColorMask(Red, Green, Blue, Alpha);
            }
        }
 

Вот соответствующие строки журнала сбоев (найдено в /Phone/UE4Game/…/Сохранено/Журналы) :

 [2021.08.13-23.50.57:859][  0]LogAndroid:   Default profile: Android_Default
[2021.08.13-23.50.57:859][  0]LogAndroid:   GpuFamily: Mali-T720
[2021.08.13-23.50.57:859][  0]LogAndroid:   GlVersion: OpenGL ES 3.1 v1.r7p0-03rel0.b8759509ece0e6dda5325cb53763bcf0
[2021.08.13-23.50.57:859][  0]LogAndroid:   VulkanAvailable: false
[2021.08.13-23.50.57:859][  0]LogAndroid:   VulkanVersion: 0.0.0
[2021.08.13-23.50.57:859][  0]LogAndroid:   AndroidVersion: 6.0.1
[2021.08.13-23.50.57:859][  0]LogAndroid:   DeviceMake: samsung
[2021.08.13-23.50.57:859][  0]LogAndroid:   DeviceModel: SM-J700M
[2021.08.13-23.50.57:859][  0]LogAndroid:   DeviceBuildNumber: MMB29K.J700MUBU2BRA1
[2021.08.13-23.50.57:860][  0]LogAndroid:   UsingHoudini: false
[2021.08.13-23.50.57:860][  0]LogAndroid:   Hardware: SAMSUNG Exynos7580
[2021.08.13-23.50.57:860][  0]LogAndroid:   Chipset: unknown
...
[2021.08.13-23.50.58:063][  0]LogAndroid: VulkanRHI will NOT be used:
[2021.08.13-23.50.58:063][  0]LogAndroid:  ** Vulkan support is not available (Driver, RHI or shaders are missing, or disabled by cmdline, see above logging for details)
[2021.08.13-23.50.58:063][  0]LogAndroid:  ** Vulkan is disabled via console variable.
[2021.08.13-23.50.58:063][  0]LogAndroid: OpenGL ES will be used.
[2021.08.13-23.50.58:063][  0]LogAndroid: Vulkan SM5 is available but disabled for this device.
[2021.08.13-23.50.58:064][  0]LogRHI: App is packaged for OpenGL ES 3.1 and an ES 3.1-capable device was detected.
[2021.08.13-23.50.58:069][  0]LogRHI: Extension eglPresentationTimeANDROID Present
[2021.08.13-23.50.58:069][  0]LogRHI: Extension eglGetNextFrameIdANDROID NOT Available
[2021.08.13-23.50.58:069][  0]LogRHI: Extension eglGetCompositorTimingANDROID NOT Available
[2021.08.13-23.50.58:069][  0]LogRHI: Extension eglGetFrameTimestampsANDROID NOT Available
[2021.08.13-23.50.58:069][  0]LogRHI: Extension eglQueryTimestampSupportedANDROID NOT Available
[2021.08.13-23.50.58:069][  0]LogRHI: Extension eglGetCompositorTimingSupportedANDROID NOT Available
[2021.08.13-23.50.58:069][  0]LogRHI: Extension eglGetFrameTimestampsSupportedANDROID NOT Available
[2021.08.13-23.50.58:072][  0]LogRHI: Initializing OpenGL RHI
[2021.08.13-23.50.58:072][  0]LogRHI:   GL_VENDOR: ARM
[2021.08.13-23.50.58:072][  0]LogRHI:   GL_RENDERER: Mali-T720
[2021.08.13-23.50.58:072][  0]LogRHI:   GL_VERSION: OpenGL ES 3.1 v1.r7p0-03rel0.b8759509ece0e6dda5325cb53763bcf0
[2021.08.13-23.50.58:072][  0]LogRHI:   GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.10
...
[2021.08.13-23.51.00:619][  0]LogInit: First time updating LLM stats...
[2021.08.13-23.51.00:910][  0]LogAndroid: Error: === Critical error: ===
[2021.08.13-23.51.00:910][  0]LogAndroid: Error: 
[2021.08.13-23.51.00:910][  0]LogAndroid: Error: Assertion failed: Index == 0 [File:/UnrealEngine/Engine/Source/Runtime/OpenGLDrv/Public/OpenGLES.h] [Line: 439] 
[2021.08.13-23.51.00:910][  0]LogAndroid: Error: 
[2021.08.13-23.51.00:910][  0]LogAndroid: Error: [Callstack] 0x00000000E0C73608 libUE4.so(0x000000000C122608)!FOpenGLDynamicRHI::RHIClearMRT(bool, int, FLinearColor const*, bool, float, bool, unsigned int)  []
[2021.08.13-23.51.00:910][  0]LogAndroid: Error: [Callstack] 0x00000000E0C73354 libUE4.so(0x000000000C122354)!FOpenGLDynamicRHI::SetRenderTargetsAndClear(FRHISetRenderTargetsInfo constamp;)  []
[2021.08.13-23.51.00:910][  0]LogAndroid: Error: [Callstack] 0x00000000E0CA3214 libUE4.so(0x000000000C152214)!FOpenGLDynamicRHI::RHIBeginRenderPass(FRHIRenderPassInfo constamp;, char16_t const*)  []
[2021.08.13-23.51.00:910][  0]LogAndroid: Error: [Callstack] 0x00000000DCDF3A10 libUE4.so(0x00000000082A2A10)!FRHICommand<FRHICommandBeginRenderPass, FRHICommandBeginRenderPassString1127>::ExecuteAndDestruct(FRHICommandListBaseamp;, FRHICommandListDebugContextamp;)  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000DCD178BC libUE4.so(0x00000000081C68BC)!FRHICommandListExecutor::ExecuteInner_DoExecute(FRHICommandListBaseamp;)  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000DCD74FB8 libUE4.so(0x0000000008223FB8)!FExecuteRHIThreadTask::DoTask(ENamedThreads::Type, TRefCountPtr<FGraphEvent> constamp;)  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000DCD746BC libUE4.so(0x00000000082236BC)!TGraphTask<FExecuteRHIThreadTask>::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32> >amp;, ENamedThreads::Type)  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000DB5AAF8C libUE4.so(0x0000000006A59F8C)!FNamedTaskThread::ProcessTasksNamedThread(int, bool)  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000DB5A9508 libUE4.so(0x0000000006A58508)!FNamedTaskThread::ProcessTasksUntilQuit(int)  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000DCE01FB4 libUE4.so(0x00000000082B0FB4)!FRHIThread::Run()  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000DB6A1970 libUE4.so(0x0000000006B50970)!FRunnableThreadPThread::Run()  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000DB5A4928 libUE4.so(0x0000000006A53928)!FRunnableThreadPThread::_ThreadProc(void*)  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000F74A7C8C libc.so(0x000000000003FC8C)![Unknown]()  []
[2021.08.13-23.51.00:911][  0]LogAndroid: Error: [Callstack] 0x00000000F74823AC libc.so(0x000000000001A3AC)![Unknown]()  []
 

есть ли в журнале что-нибудь еще, что могло бы быть полезно для решения этой проблемы?

Итак, «LogRHI: приложение упаковано для OpenGL ES 3.1, и было обнаружено устройство с поддержкой ES 3.1». значит, это должно работать правильно?

Как и предлагалось (https://forums.unrealengine.com/t/4-25-apk-runs-fine-4-26-1-apk-crash/158698/7), мне придется перекомпилировать редактор (который занял 12 часов на моем 4 ядре), удалив это утверждение, или есть менее травматичный вариант?

Как вы думаете, они удалили это утверждение для pubg mobile?
Я видел, что есть много утверждений, в которых он может выйти из строя только в OpenGLES.h, поэтому я бы предпочел не исправлять движок, если только это не единственный вариант, потому что перекомпиляция занимает слишком много времени.

Комментарии:

1. Я прокомментировал строку check (), но она не перекомпилировала связанные файлы с помощью make . Когда мне наконец удастся его перекомпилировать, я отредактирую эту операцию, чтобы сказать, что время компиляции не является проблемой. Проблема заключалась в том, что я переместил папку проекта, и она хотела перекомпилировать все, чтобы обновить этот путь во многих файлах .cpp… Поэтому я просто вернул его на начальный путь компиляции.

2. Я удалил все файлы OpenGLDrv .o и .so, перекомпилировал, но оба libUE4Editor-OpenGLDrv.so новое и старое идентичны! все еще не удается перекомпилировать на основе новых изменений .h.