描画

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dpbut

描画

#1

投稿記事 by dpbut » 17年前

DirectXで扇形を描画する質問です。
60度の角度で上方向に扇形を描画さしたいのですが(円弧の方が上)
開始地点は275から半径50の扇形を描画さしたいのですが
pD3Device->SetTexture(0, pTexture[0]);
pt[0].x = 250.0f;
pt[1].x = 300.0f;
pt[3].x = 275.0f;
pt[2].x = 275.0f;

pt[0].y = 225.0f;
pt[1].y = 225.0f;
pt[2].y = 275.0f;
pt[3].y = 275.0f;

pt[0].tu = pt[3].tu = 0.0f  / 1024;
pt[1].tu = pt[2].tu = 200.0f / 1024;
pt[0].tv = pt[1].tv = 0.0f  / 1024;
pt[2].tv = pt[3].tv = 200.0f / 1024;

pD3Device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,2,pt,sizeof(CUSTOMVERTEX));

このままでは、斜面が50の三角形ができただけで・・・
pt[0].xとpt[1].xは、ただ単に50とゆうだけで角度で表していないので場所は変わるかと思いますがpt[2].xとpt[3].xは275から開始でお願いします。
これを扇形にしたいのですが、どなたかご教示ください。お願いします。

御津凪

Re:描画

#2

投稿記事 by 御津凪 » 17年前

D3DPT_TRIANGLEFAN は、最初の頂点を基点にポリゴンを表示していくので、
pt[0] を275とし、それ以降の頂点を正多角形の点のように円状に配置していくと実現できます。

きれいな円弧の扇形を作るには、頂点がたくさん必要になりますので注意してください。

ちなみに上記のコードではpt[2]とpt[3]が同じ場所にあるので、二つ目のポリゴンが表示されません。

dpbut

Re:描画

#3

投稿記事 by dpbut » 17年前

そうですか・・・
頂点をたくさんですか
角度計算とかで描画できそうに思えたのですが、
他の方法とかできれいな扇形で描画する方法とかないでしょうか?

御津凪

Re:描画

#4

投稿記事 by 御津凪 » 17年前

ポリゴンの当たり判定などを考慮しないのであれば、
単純に扇形で外側が透明の画像を板ポリゴンに貼り付ける方法があります。

既にテクスチャが使用されているようなので、そのテクスチャに上記の方法を適用するか、
テクスチャステージステートを使って、二つのテクスチャを使って表示するという方法があります。

一応、頂点をたくさんといっても、
半径50の扇形の場合、大きさにもよりますが、26(始点含む)個の頂点を用意すれば、大体円弧に見えます。
頂点・UVの位置を角度計算すれば、円状に配置できます。

閉鎖

“C言語何でも質問掲示板” へ戻る