У меня проблема с SLMATH библиотекой .Не уверен, если кто-то использует это или использовал это раньше?В любом случае, проблема в том, что когда я компилирую с включенной оптимизацией SSE (в VS 2010), я, очевидно, должен предоставить контейнер, который имеет правильное выравнивание байтов для объектов типа SSE.Это нормально, потому что в SLMATH есть небольшой класс, который является выровненным вектором;он выравнивает распределение вектора по 8-байтовой границе (т.е. я не использую std :: vector <>).
Теперь проблема в том, что появляется любая структура или класс, который содержит что-то вроде slm :: mat4 mustтакже выровняйте по такой границе, прежде чем поместить в коллекцию.Так, например, я использовал выровненный вектор для создания массива slm :: mat4, но если я создаю класс с именем Mesh, а Mesh содержит slm :: mat4, и я хочу поместить Mesh в std :: vector,ну, я получаю странные ошибки памяти во время отладки.
Итак, учитывая, что документация действительно очень скудна, может ли кто-нибудь, кто использовал эту библиотеку, сказать мне, что именно я должен сделать, чтобы использовать ее с оптимизацией SSE?Я имею в виду, что мне не нравится идея использовать выровненные векторы абсолютно везде вместо std :: vector на тот случай, если slm :: component в конечном итоге инкапсулируется в класс или структуру.
В качестве альтернативыбыстрая математика для векторной / матричной / графической математики, такая же, как SLMATH, была бы хороша, если бы она была где-то рядом.Использование SLMATH иллюстрирует проблему:
#include <vector>
class Item
{
public:
__declspec(align(8))
struct {
float a, b, c, d;
} Aligned;
};
int main()
{
// Error - won't compile.
std::vector<Item> myItems;
}
Робин