• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DirectXで曲面の描画)

DirectXで曲面の描画

このQ&Aのポイント
  • DirectX9で滑らかな曲面の描画を考えています。
  • 具体的には、座標を与えて波を打つような曲面を作成したいです。
  • 自分でメッシュを作成することで実現可能かどうか、またXファイルを使わずにメッシュを作成する方法について知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

内容がわかりづらくて申し訳ない。。。 200行近くあるので,掲載しきれないもので。 > メッシュで描画すると複数のメッシュを > mesh1.DrawSubset(); > mesh2.DrawSubset(); > のように同時に描画できると思うのですが、 > ご回答いただいた方法ですと > device.SetStreamSource(0, vb1, 0); //メッシュ1の頂点の設定 > device.Indices = ib1; // メッシュ1インデックスの設定 > device.DrawIndexedPrimitives(・・・) > device.SetStreamSource(0, vb2, 0); > device.Indices = ib2; > device.DrawIndexedPrimitives(・・・) > といった要領で独立した曲面を描画することになるのでしょうか? そうですね。 関数化して使うといいと思います。

sire
質問者

お礼

お礼が遅れましたが、ありがとうございました。

その他の回答 (1)

回答No.1

メッシュ作成には頂点バッファとインデックスバッファが必要だと思いますよ。 (x, y, z)でプロットしたいだけならC#だと, VertexBuffer vb = new VertexBuffer(・・・・) GraphicsStream data = vb.Lock(0, 0, LockFlags.None); data.Write(new CustomVertex.PositionColored(x, y, z, color); ・・・ 繰り返し vb.Unlock(); // 0番目のバッファからN番目のバッファまでをつなぐ short[] indices = { 0, 1, 2, 3, 4, 5 ・・・ } のように頂点とインデックスを登録して, device.VertexFormat = CustomVertex.PositionColored.Format; device.SetStreamSource(0, vb, 0); //頂点の設定 device.Indices = ib; // インデックスの設定 device.DrawIndexedPrimitives(・・・) で,できると思いますよ。 曲面を作りたいなら,インデックスバッファは3つ区切りで三角形を書き連ねる。 いろいろ省略しましたがDirectXのサンプルを参考に。。

sire
質問者

補足

検証に時間がかかり、返答とお礼が遅れて申し訳ありません。 まだ実現できているわけではないのですが、 ご回答いただいた要領で3次元の座標から曲面が描画できそうであることがわかり、大変参考になりました。 私は質問でも含めさせていただいたように、曲面はメッシュで実現するものと思っていたのですが、 メッシュで描画すると複数のメッシュを mesh1.DrawSubset(); mesh2.DrawSubset(); のように同時に描画できると思うのですが、 ご回答いただいた方法ですと device.SetStreamSource(0, vb1, 0); //メッシュ1の頂点の設定 device.Indices = ib1; // メッシュ1インデックスの設定 device.DrawIndexedPrimitives(・・・) device.SetStreamSource(0, vb2, 0); device.Indices = ib2; device.DrawIndexedPrimitives(・・・) といった要領で独立した曲面を描画することになるのでしょうか?

関連するQ&A

専門家に質問してみよう