Я читал Game Engine Books с 14 лет (в то время я ничего не понимал: P) Теперь довольно много лет спустя я хотел начать программирование Mathmatical Basis для своего игрового движка. Я долго размышлял о том, как создать эту "библиотеку". (Что я имею в виду как "Организованный набор файлов" ) Каждые несколько лет появляются новые инструкции SIMD, и я не хочу, чтобы они пропадали даром. (Скажите, если я ошибаюсь в этом.)
Я хотел, по крайней мере, иметь следующие свойства:
- Возможность проверить, имеет ли он SIMD во время выполнения, и использовать SIMD, если он есть, и использует обычную версию С++, если это не так. (Возможно, у вас есть некоторые накладные расходы, стоит ли это?)
- Возможность компиляции для SIMD или обычного С++, если мы уже знаем цель во время компиляции. Вызовы могут встраиваться и использоваться для кросс-оптимизации, потому что компилятор знает, используется ли SIMD или С++.
EDIT - я хочу, чтобы исходный код был переносимым, чтобы он мог запускаться на другом, а затем x86 (-64) тоже
Итак, я подумал, что было бы хорошим решением использовать указатели на функции, которые я бы сделал статическими и инициализировал в начале программы. И какие подходящие функции (например, умножение матрицы/вектора) вызовут.
Как вы думаете, какие преимущества и недостатки (которые превосходят больше?) этого дизайна, и возможно ли даже создать его с обоими свойствами, как описано выше?
Christian