Shade Plugin SDK の vec3
【追記】…あれ?よく見たらvec3型って添え字アクセス付いてない?んーと、これはアクセスだけ?自分が1日かけて「実装は無理」って結論にたどり着いた物が、足下にあったりとか…。また訳わからなくなってきました。無意味な記事かもしれません。
Shade Plugin SDKのvec3型の仕様がどうもしっくりこないので、自分で書いてみよう(書いてみたら何かわかるかも)と思い立ち、やってみました。
SDKでは、vec3型のvという変数の各成分にアクセスするにはv.xのようにメンバ変数にアクセスしますが、これをv[0]と配列添え字でもアクセスできたらループとか作りやすくて便利じゃない?てことでトライしてみた次第。
トライしましたが、ダメでした。添え字でデータを取り出す(floatやdoubleを返す)メソッドは簡単に定義できるんですが、v[0] = 1.0のように添え字付きの代入できるようにしようとすると難しいみたい。
演算子のオーバーロードにあるように、いったんoperator=で変数を受け取ってメンバ変数に格納し、次にoperator[]でそれを反映するようにすればできることはできるらしい。
けど、この方法だとv = 1.0のようにバッファ部分だけを書き換える処理ができるようになってしまうので、意図した動作とは違う使い方もできてしまってあまり美しくない感じがしました。同じ手法では+=が実装できないとか、クラス自体がバッファの分だけ大きくなってしまうとか。
結局、読み取りだけできる[]を残しておいてもしょうがないか。てことで、添え字アクセスは無しになりました。難しいんだなぁ。
投稿者 | CASPAR003 |
投稿時刻 | 22:01 |
カテゴリー | 雑記 |
コメント | 0 件 |
トラックバック | 0 件 |
記事へのリンク | http://www.caspar003.info/delta/archive/2009/04/26/2201.html |
コメント
- 投稿者
トラックバック
- トラックバック