Closed
Description
Notes
- Other performance topic: https://forum.cocos.org/t/topic/90248, showcase: http://www.icarus-li.com/video/d1.mp4
- ProgramState not cache, v3 cached, my cause some compatible issue
- At cocos2d-x-v4, the ProgramState could shared only object have same texture, such as
ProgramState* ProgramStateRegistry::getProgramState(ProgramType programType, Texture2D* texture)
{
auto textureFormatEXT = texture ? texture->getTextureFormatEXT() : 0;
char hashMe[sizeof(programType) + sizeof(texture)];
memcpy(hashMe, &programType, sizeof(programType));
memcpy(hashMe + sizeof(programType), &texture, sizeof(texture));
auto key = XXH32((const void*)&hashMe, sizeof(hashMe), 0);
auto iter = _programStateCache.find(key);
if (iter != _programStateCache.end())
return iter->second;
auto programState = newProgramState(programType, textureFormatEXT);
if (programState) {
_programStateCache.emplace(key, programState);
}
return programState;
}
Engine core
- RenderTarget abstract
- Refactor enums map method, use table instead many much switch case
- Cache depthstencil state, tsl::robin_map
- Remove
FileUtils::getFileDataFromZip
, recommend useZipFile
instead - ASTC 4x4/8x8 support
- ETC2 RGB/RGBA support
- Improve Image, fast forward
compression texels data
to GPU - Refactor audio engine, OpenAL for all platforms
- Remove SimpleAudio
- Remove offthread file operation
- Explicit convert utf-8 file path to wide-string and call wide win32 file operation APIs
- Refactor Downloader, curl for all platforms, don't use scheduler to retrieve progress info, make it more reusable
- minizip-1.2.0
- ccMessageBox
- BMP support with stb_image
- Remove unused libuv
- Reorder child support
- Remove tinyxml2 dep, use pugixml instead
- Use xsxml for SAX parser only
- Multi meta textures v1.0
- ProgramStateRegistry
- ANGLE support.
- Use curl for HttpClient all platforms
- Remove xxtea
- Remove rapidxml dep
- Fix etc1 alpha test case, content size incorrect
- Remove fmod for linux
- Use stat to check regular file exist for android platform
- Use int64_t as return type for getFileSize
- ios .ogg support
- ZipUtils streaming API, support streaming play audio file in android obb
- Add & Improve play .wav audio at all platforms
- Remove unnecessary workaround to process audio tail frame at non-apple platforms.
- Cache ProgramState
- Remove socket.io websockets, use yasio for socket connection solution
- Fully streaming play for all media file: .mp4, .mp3, .ogg, .wav
- Streaming load for .ttf with freetype2
- Remove CCB(already removed in v4)
- Purely offthread load texture, use shared gl context
- Refactor UserDefault with file mapping io with encrypt support
- msaa
- Refactor VideoPlayer
- GPU texture array support
- OpenGL RenderBuffer for depth stencil buffer D24S8
Thirdparty
- Use git submodules to manage 3rd libs or marge 3rd repo to main repo
- Update zlib to 1.2.11
Extensions:
- move spine, ccs, dragonBones to extensions
- All extensions should be optional and can disable relax
- ImGuiEXT
- FairyGUI
- spine-3.8
- cocostudio
- dragonBones
- Also move lua binding to extension
- Also move spine-cpp to extension
- EncryptSystem
- particle system: https://github.com/effekseer
Toolsets And build env
- Use system env for cmake to avoid copy engine sources when create new project
- lua-template and lua-empty-test needs fix
- New command line tool
- GUI Peoject Creator
- Sence Editor with ImGui
Lua Binding
- Lua53 compat
- Use plainlua instead luajit
- make lua test works well
- Remvoe luasocket, use yasio for socket connection solution
- Use sol2 for binding framework instead tolua++
poors of LuaJIT
- Lack of maintain
- High crash from game developer
- Performance(jit==on) slow than
planlua
without restricts programing (luajit have to many programing restricts)
benefit of lua5.4
- compat bytecode 32,64bit app without any changes