我从 14 岁开始就一直在阅读游戏引擎书籍(当时我什么都不懂:P) 几年后,我想开始为我的游戏引擎编写数学基础。我一直在思考如何设计这个“图书馆”。(我的意思是“有组织的文件集”)每隔几年就会出现新的 SIMD 指令集,我不希望它们浪费掉。(如果我错了,请告诉我。)
我想至少具有以下属性:
- 使其能够在运行时检查它是否有 SIMD,如果有则使用 SIMD,如果没有则使用普通的 C++ 版本。(可能会有一些通话开销,这值得吗?)
- 如果我们在编译时已经知道目标,则使其能够为 SIMD 或普通 C++ 编译。这些调用可以内联并适合交叉优化,因为编译器知道是使用 SIMD 还是 C++。
编辑 - 我想让源代码可移植,这样它也可以在其他设备上运行,然后是 x86(-64)
所以我认为使用函数指针是一个很好的解决方案,我会在程序开始时将其设为静态并初始化。以及合适的函数(例如矩阵/向量的乘法)将调用。
您认为这种设计的优点和缺点是什么(哪个更重要?),甚至可以用上述两种特性来创建它吗?
基督教