Voy*_*Voy 8 android native-methods opengl-es matrix
我一直想知道是否有人知道
他们可以分享.
.
询问的原因是,当通过OpenGL ES学习时,该方法被广泛用于各种计算.但是,我发现android.renderscript.Matrix4f比使用原始float []数组更自然.问题是,Matrix4f的乘法函数使用临时矩阵来执行操作,这导致内存效率低下.
解决这个问题的一种方法是创建我自己的Matrix4f并自己编写multiply().我基于以下示例.它可能看起来很糟糕,但保存了我所有的set(),get()和循环,这提高了性能.
但是,我仍然不想让乘法器去.在源代码中,您可以读到该方法是原生的,因此应该更快地评估(是吗?).这让我再次怀疑.
.
因此,有谁知道:
use*_*709 10
1)算法是矩阵乘法.这与您在线性代数课程中学到的内容相同.(来源:http://androidxref.com/source/xref/frameworks/base/core/jni/android/opengl/util.cpp)
是否multiplyMM使用临时工?它是原生的,所以没关系.如果有临时变量,则在堆栈上分配.不涉及GC,因为它是原生的.
2)也许吧.仅仅因为它是用C++编写的,这不会使代码执行得更快.为什么?从Java域切换到本机代码存在开销,并且这种开销可能超过了在本机代码中执行的性能优势.
尽管如此,还有两件事需要记住:1)不要过早地优化代码,除非你确定这是一个性能瓶颈,2)如果你不确定,请进行一些测量.对您的代码进行一些分析以得出正确的结论.
| 归档时间: |
|
| 查看次数: |
3707 次 |
| 最近记录: |