【问题标题】:renderscript rsMatrixMultiply functionrenderscript rsMatrixMultiply 函数
【发布时间】:2023-03-29 21:19:01
【问题描述】:

我正在开发一个 OpenGL ES 2.0 android 应用程序,方法是从一个渲染脚本创建的应用程序中移植代码。在 renderscript 中使用了这个函数:

float4 rsMatrixMultiply(rs_matrix4x4 *m, float3 in);

有谁知道这个函数到底是做什么的以及它是如何实现的,因为我需要在使用 Java 的 OpenGL 应用程序中使用它。

【问题讨论】:

标签: android renderscript


【解决方案1】:

这会在矩阵“m”和向量“in”之间进行标准矩阵乘法。结果放回“m”中。为了将 4x4 矩阵与大小为 3 的向量相乘,此函数的行为就像向量是 float4 且 w 维度的值为 1。

有关此函数的文档,请查看此处: http://developer.android.com/reference/renderscript/rs__matrix_8rsh.html

以下是来自 AOSP 的 rs_core.c 的实际代码:

extern float4 __attribute__((overloadable))
rsMatrixMultiply(const rs_matrix4x4 *m, float3 in) {
    float4 ret;
    ret.x = (m->m[0] * in.x) + (m->m[4] * in.y) + (m->m[8] * in.z) + m->m[12];
    ret.y = (m->m[1] * in.x) + (m->m[5] * in.y) + (m->m[9] * in.z) + m->m[13];
    ret.z = (m->m[2] * in.x) + (m->m[6] * in.y) + (m->m[10] * in.z) + m->m[14];
    ret.w = (m->m[3] * in.x) + (m->m[7] * in.y) + (m->m[11] * in.z) + m->m[15];
    return ret;
}

【讨论】:

  • 感谢您的回复。但是从这个链接中,我看不到确切解释这个函数作用的代码。因为如您所见,它将 4x4 矩阵与 float3 向量相乘。从基本数学我知道您可以将 4x4 矩阵乘以 float4 向量。在这种情况下,它是某种执行不同计算的重载函数。
  • @Sandra,该函数假定向量的 w 值为 1。我已经编辑了我的回复。
  • @spatulamania 那么这可以用来旋转图像吗?如果有,怎么做?
  • @spatulamania - +1。谢谢你。 Renderscript API 对如何执行此计算非常模糊。感谢您提供指向 AOSP 的链接!
猜你喜欢
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多