Хорошо продуманные обертки вокруг векторной библиотеки GLMC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Хорошо продуманные обертки вокруг векторной библиотеки GLM

Сообщение Anonymous »

[Решено] < /h1>
Этот вопрос настолько специфичен, что я не уверен, как искать информацию, поэтому опыт научил меня, что здесь лучше задать вопрос, чем реализовать что-то из подоптимального качества. Я использую библиотеку GLM, но я не хочу выставлять типы GLM остальной кодовой базе. Немного вдохновения пришло от Vlog по дизайну игрового двигателя (Travis vroman: Kohi Game Engine Series #22). < /P>

[*] На случай, если в какой -то момент я желаю использовать Directx, тогда типы GLM могут быть не совместимы (я не знаю, но может < /em>). Засоренная по всей кодовой базе будет проблемой.

Код: Выделить всё

// the header
namespace math
{
template
union tvec2
{
T elements[2];
struct
{
union { T x, r, s, u; }; // aliases for first element
union { T y, g, t, v; }; // aliases for second element
};
};

typedef tvec2 vec2;

vec2 operator+(vec2 a, vec2 b);
}

// the source file for glm implementation
#include 

math::vec2 math::operator+(math::vec2 a, math::vec2 b)
{
glm::vec2 result = glm::vec2(a.x, a.y) + glm::vec2(b.x, b.y);
return { result.x, result.y };
}
my Intuition
Статические требования к хранению :
Я хочу, чтобы требования хранения VEC2 были статичными и присутствуют внутри заголовка. Это позволяет легко получить лучшую производительность кэша, упаковывая векторы внутри массивов структур. В противном случае мне придется использовать либо интерфейсы, либо непрозрачные типы указателей, что приведет к дополнительным нехватке времени выполнения. Я могу придумать другие причины, но, надеюсь, эта интуиция станет ясной и хорошо сформированной. Таким образом, мне не придется бороться с внутренней. (например, штраф за вызов конструкторов GLM :: VEC2)


Подробнее здесь: https://stackoverflow.com/questions/729 ... or-library
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»