1
我需要把glm數學庫mat4放到sqlite3 BLOB中並返回。什麼是最有效的方法?將mat4序列化爲字節?,將mat4變成浮點數組? BLOB不會拿MAT4直接GLM矩陣4X4(mat4)到數組並返回
加入MAT4的蠻力轉化爲浮動
:) using namespace glm;
mat4 fM;
float fma[16];
vec4 t0 = fM[0];
vec4 t1 = fM[1];
vec4 t2 = fM[2];
vec4 t3 = fM[3];
fma[0] = t0[0];
fma[1] = t0[1];
fma[2] = t0[2];
fma[3] = t0[3];
fma[4] = t1[0];
fma[5] = t1[1];
fma[6] = t1[2];
fma[7] = t1[3];
fma[8] = t2[0];
fma[9] = t2[1];
fma[10] = t2[2];
fma[11] = t2[3];
fma[12] = t3[0];
fma[13] = t3[1];
fma[14] = t3[2];
fma[15] = t3[3];
這已經過測試,正常工作的陣列 - 但應該有一個更好的辦法。 從float [16]到mat4的轉換由glm庫glm/gtc/type_ptr.hpp處理 - 按照它應該的方式工作。 sqlite3中的BLOB將直接採用float數組。
解決:
#include <glm/glm.hpp>
#include <glm/gtc/type_ptr.hpp>
float *fM;
glm::mat4 matrix;
fM = glm::value_ptr(matrix);
sqlite3_bind_blob(stmt, 0, fM, sizeof(fM), SQLITE_STATIC);
爲GLM值:: MAT4上述轉換成浮陣列,其然後可以被保存在sqlite3的作爲一個單一的BLOB類型
sqlite3中的BLOB類型似乎是我的選擇,至少 - 對於序列化/反序列化更簡潔直接。我希望只需要glm lib功能就可以從矩陣中獲取浮點數,而不必先通過Vec4類型。 – narkis
一個解決方案似乎可以簡化此轉換: – narkis