3

行列の値を保存する方法として何が良いでしょうか?

float m1,m2,m3 ... ,m16

また

float[4][4].

私は最初にfloat [16]を試しましたが、VSをデバッグしてテストすると、配列の内容が表示されません:( coutを実装して、コンソールテストアプリケーションから回答を読み取ろうとする可能性があります。

次に、テストとデバッグでfloat m1、m2、m3などを使用してみましたが、VSで値を読み取ることができたので、操作が簡単に思えました。

私の質問は、私はC ++でかなり新しいので、より良い設計は何ですか?

float m1,m2 ... ,m16デバッグするときの方が扱いやすいと思います。

また、行列データはメモリ内で同じように配置する必要があるため、誰かが経験から言うことができるか、パフォーマンスが優れているベンチマークデータを持っていると、私の腸はそれは本当に重要ではないと言っていますか?

編集:いくつかの詳細情報は、列の主要なマトリックスです。私の知る限り、ビュー変換パイプラインには 4x4 マトリックスのみが必要です。何も大きくないので、一定の値があります。

C++ をさらに学び、経験を積み、線形代数のスキルを習得/向上させる方法として、単純なソフトウェア レンダラーの作成に忙しくしています。おそらく、フラグメントごとのシェーディングといくつかの単純な照明モデルにのみ行きます。これまでのところ、レンダリングに必要な最大のものは 4x4 マトリックスです。

Edit2:配列データを読み取れなかった理由がわかりました。これは使用した浮動小数点ポインターであり、デバッグ メニューにはポインター値のみが表示されました。 = 見たい要素。

ありがとうと答えてくれた皆さん、今のところ Vector4 m[4] の回答を使用します。

4

5 に答える 5

1

ループを使用して反復処理を行う場合、これを処理するのfloat m1, m2 .. m16;は非常に扱いにくくなります。ある種の配列を使用する方がはるかに簡単です。そして、ほとんどの場合、実際にインライン アセンブラーを記述したり、SSE 組み込み関数を使用したりしない限り、ループを「ハンド コード」のように使用すると、コンパイラーは少なくとも効率的なコードを生成します。

于 2013-04-04T11:35:41.633 に答える
-1

行列要素に個別の変数を使用すると、問題が発生する場合があります。100x100 のような大きな行列を扱うとき、何をする予定ですか?

もちろん、配列のような構造を使用する必要があり、少なくとも配列を使用することを強くお勧めします

于 2013-04-04T11:28:49.853 に答える