* Fix compilation issue in Texture2D.cpp with _AX_DEBUG=2.
* Fix memory leak: ShaderCache was not purged.
The ShaderCache class had two static members: a map for the cache, and
a pointer to the single instance of ShaderCache. The map was
supposedly cleared in the destructor but there was actually no
instance of ShaderCache (getInstance() was never called and the other
functions accessed the map directly). This commit removes the
singleton "interface" such that only the map is used, then it cleared
the map upon request.
Valid value of AX_GLES_PROFILE: 0, 200, 300
By default, the AX_GLES_PROFILE is:
- android: 200, allow axmol apps runs on: API 17 Android 4.2+ devices
- winuwp: 300
- Win32/linux/osx/ios/tvos: 0
For ios/tvos, will forcing AX_GLES_PROFILE to 300 if AX_GLES_PROFILE not 0
1. Rename uniformId to batchId, refine batch draw check logic, not use xxhash to compute uniforms id
2. Material works, not check all cpp-tests, but some 2d/3d material works fine
3. Shader load/cache API improvements.
4. BREAK compatibliity: Node::setProgramState change parameter needsRetain to ownPS and value inverted.
5. custom vertexLayout setup: add new API ProgramState::getMutableVertexLayout, mark ProgramState::setVertexAttrib deprecated.
6. ProgramManager registerCustomProgram change to gen progId by vsName, fsName
with xxhash64, if register succed, user can load it by progId with `loadProgram`
7. Add API ProgramManager::loadProgram for loading builtin by progType or
loding a custom program by id
8. Add API ProgramManager::loadProgram to load program by vsName, fsName
immediately without register as CUSTOM_PROGRAM
9. Add API Node::setProgramStateByProgramId(progTypeOrId); for set programState with
programType or programId explicit.
10. Migrate material load logic