Explanation: The return value of ExtractData is never checked anywhere in code. However if it returns false, outData remains uninitialized. All code using ExtractData assumes outData is initialized and proceeds to using it. I haven't encountered a real-life case where this goes wrong - but the simple fact that it can go wrong is a red flag. Instead of relying on every bit of code checking the return value and handling this properly, I think it makes much more sense to have ExtractData throw an exception. It obviously is an exceptional situation, and throwing makes sure that no code that doesn't explicitly handle such a scenario continues running and potentially causing harm.
- Fixed condition preventing ASSIMP_BUILD_ASSIMP_VIEW showing up on first time
- Set ASSIMP_BUILD_ASSIMP_VIEW to off by default.
- Removed unnecessary reference to DirectX 9 library.
- Removed OpenGL/Glut references in SimpleTexturedDirectX11 CMakeFile
- Moved UTFConverter from SimpleTexturedOpenGL to its own file to be able to reuse it.
- Added compile definition SHADER_PATH to allow to locate the shader files in CMakeFile
- Fixed compile warnings
- Made global pointers null to help prevent dangling references.
- Added missing members initialization in class constructors.
- Removed references to missing model "Models/mymodel.fbx"
- Fixed error when extracting model file directory
- Added missing device context assignment in ModelLoader Load method
- Fixed memory leak caused by variable 'ourModel' not deleted.
- Removed call to dev->Release() in ModelLoader.cpp
- Adjusted Release() calls in reverse order when cleaning up D3D
- Made Throwanerror implementation throw an error instead of displaying a message box
- Fixed leaking D3D resources
- Added a pointer to an ID3D11Debug to dump live objects.
Linkage against lib or lib64 should be taken into assumption.
Without it we get:
The imported target "assimp::assimp" references the file
"/usr/lib/libassimp.so.5"
When compiling against x86_64 target. The library of couse exits in
/usr/lib64.
see:
https://cmake.org/cmake/help/v3.17/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.html
As i am not a master of cmake this should be double checked if
it doesn't break anything.
Signed-off-by: Nikita Shubin <NShubin@topcon.com>
This is a follow-up to PR #3024, in which I explained that I would then change the version of CMake to 3.0 in several files to match the changes that were originally made by OP in PR #3008.
The minimum CMake version have been raised to 3.0 in both assimp_cmd and assimp_view projects.
The same CMake configuration as in PR #3024 was used. All projects from PR #3024 are found in the solution with the current changes. All projects built. All tests were run.