我需要将glm数学库mat4放入sqlite3 BLOB中并返回。什么是最有效的方法?将mat4序列化为字节?,将mat4转换为浮点数组? BLOB不会直接使用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的值转换为一个float数组,然后可以将其作为单个BLOB类型保存在sqlite3中

最佳答案

目前,我正在做类似的事情,因此希望对您有所帮助。
我正在做的是:将矩阵转换为浮点数,然后转换为字符串并将其存储在xml中,您可以通过将浮点数组作为字符串存储在SQLite数据库中来执行相同的操作。

关于matrix - GLM矩阵4X4(mat4)进行阵列并返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16566322/

10-11 18:26