我试图将 GLSL 转换为 GLSL ES 并遇到了这个问题:转置函数在 GLSL ES 中不可用。
mat3 yuv = transpose(yuv_matrix);
那么我该如何使用它呢?还有其他选择吗?
最佳答案
3x3 矩阵可以是 transposed如下:
mat3 yuv = mat3(
vec3(yuv_matrix[0].x, yuv_matrix[1].x, yuv_matrix[2].x),
vec3(yuv_matrix[0].y, yuv_matrix[1].y, yuv_matrix[2].y),
vec3(yuv_matrix[0].z, yuv_matrix[1].z, yuv_matrix[2].z));
注意,转置矩阵是对其对角线进行翻转的矩阵。
(a b c) T (a d g)
(d e f) = (b e h)
(g h i) (c f i)
矩阵由列向量组成。所以矩阵可以用向量来初始化,例如:
vec3 a, b, c;
mat3 m = mat3(a, b, c);
矩阵的向量可以通过索引运算符访问,例如:
mat3 m;
vec3 v = m[1];
关于GLSL ES 中 GLSL 的转置替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56211106/