0

たとえば、QMatrix4x4 と Ogre::Matrix4 があります。

QMatrix から Ogre::Matrix4 への変換は少し面倒です。確実な解決策があるかどうか知りたいですか?

現在、各要素を for ループにコピーしているだけですが、何か提案はありますか?

4

1 に答える 1

1

C++11 では、両方の型がlayout-compatibleである場合、単純reinterpret_castにそれらの間を移動できます。例:

#include <cassert>

struct X{
  int a, b, c, d;
};

struct Y{
  int arr[4];
};

int main(){
  X x{0, 1, 2, 3};
  Y& y = reinterpret_cast<Y&>(x);
  assert(y.arr[2] == 2);
}

(例が正しかったといいのですが、 Ideone に住んでいます。)

このアプローチの問題は、実装の内部を掘り下げる必要があることです。これは、異なるリリースでも安定していない可能性があります。そのため、単純にコピーすることが最善の方法である可能性があります (ほとんどのポータブル/既知/堅実な方法のように)。

ただし、問題の型がどのインターフェイスを提供するのか個人的にはわかりません.Ogreは、直接操作するのではMatrix4なく、(2D)配列でも操作するアルゴリズムを提供する可能性があります。API ドキュメントを確認してください。

于 2012-06-17T23:04:32.077 に答える