938 :
名前は開発中のものです。:03/06/19 13:39 ID:huxG79qD
Direct3Dを使って円を描画したいんですけど
普通の円、塗りつぶした円とかなんですが・・
やりかたがよく分かりません 教えて頂けないでしょうか?
DrawPrimitiveとかを使って描けますか?
939 :
ちよ:03/06/19 15:18 ID:J/0rHTBe
>>938 DrawPrimitiveを使用しても きれいな円を描くには、
ポリゴン数がかなり必要。
円のテクスチャーを用意するのが簡単で良いんじゃない?
グレースケールで作っておいて色を変更したいときには
頂点カラーを設定するのがよさそう。
スクリーンバッファをロックしてピクセル単位で塗りつぶす方法もあるが、
遅くて使いものにならないとおもう。
ピクセルシェーダが使えそうな気がした。いや、知らんけど。
942 :
名前は開発中のものです。:03/06/20 00:28 ID:PhCMIKkN
確かに単純な円ならピクセルシェーダでも描けるな。
ただ精度がちょっと心配かも。
PS2.0なら問題ないんだけどさ。
945 :
あぼーん:03/06/20 02:00 ID:QGuS5T92
946 :
938:03/06/20 22:19 ID:z58H3NHE
>>940 レスどうも。
実用速度を考えた場合は、やはり円のテクスチャーを用意するのがよさげですね。
時と場合によって、バッファのDCにAPI使う方法と
テクスチャーで使い分けする事にします。
俺はテクスチャよりポリゴンの方がいいと思うがな。
どうせファン1つで済むから1ポリゴン≒1頂点だし。
949 :
名前は開発中のものです。:03/06/24 13:33 ID:KCeWITLJ
DX9のテクスチャからサーフェスを取得して、GetDC()でHDCを取得したんだけど
これってデバイスコンテキスト用API(?)のSetPixel()とかBitBlt()とかは
全部つかえるもんなの?
GetDC()には成功したんだけど、なにやっても真っ黒なんだよねー(泣)
使えるよ。
っていうか、本当にGetDCは成功してるのか?
951 :
949:03/06/25 13:10 ID:t/sv5vGp
黒くなったのは、GetDC()したからではなく、
テクスチャ作成時のフォーマットをD3DFMT_X8R8G8B8に
したのが原因だったようです。
でもなんで黒くなるのか分かりません。
昨日は頭が回ってない状態で質問してしまったです。
正確には、画面上の任意座標に絵を2Dで表示させる為に
テクスチャを用意して、それをスプライトを用いて
Draw()するようなことをやっていました。
上記フォーマットで作成した場合、指定した位置に
真っ黒で表示され、GetDC()で書き込んだ内容が
ウインドウの左上位置(0,0)に表示されてしまいました。
うーん、自分、テクスチャとサーフェスをよく
理解していないのかもしれません。
GetDC()はちゃんと成功しています。
>>951 結論から言うとGETDCで得たDCに直接書き込んでも実用品になりません。
ちらつくだけです。
コンパチブルDCをつくりDIBを作成
テクスチャも作成してそこから転送 このときテクスチャはARGBのデーターです。
そのテクスチャをポリゴンに貼り付け
真っ黒なのはアルファデーターを考えてないからかもしれないからかな?
アルファデーターはどこでどうされてるのでしょうか?
なんでテクスチャにGetDCしてちらつくんだ?
そんな話は初めて聞いたけど?
954 :
名前は開発中のものです。:03/06/26 19:31 ID:5GfwaFR5
つーかみなさま
ID3DXEfectPoolって使えてます?
インスタンス化したインターフェイスを
D3DXCreateEffectに渡すとエラーになるんですよね。
渡すだけなんで何かミスしてるとは思えないし。
DX9aSDKじゃないんでそれが原因ですかね?
955 :
名前は開発中のものです。:03/06/26 19:40 ID:5GfwaFR5
GetDCはフォント関係とダイアログ表示だけにするべきだと思うな。
それ以外のことはD3DXでより簡単にいけるでしょ。
956 :
名前は開発中のものです。:03/06/26 19:53 ID:5GfwaFR5
あともう1つ質問。
環境マップを使ったエフェクトで最終的な色出力式ってどうすりゃいいのかな?
デカールテクスチャ色xデフューズ色+スペキュラ色+環境マップテクスチャ色+アンビエント色
でいいの?
デフューズ、スペキュラと環境マップをどう絡ませるべきなのかわからんす。
>>953 テクスチャを経由する場合は透明部分がいるからアルファ付きにする必要があるが
そうするとGetDCが出来なくなる
958 :
名前は開発中のものです。:03/06/26 23:05 ID:UzXWyRBe
グラフィックメモリの消費量(or残量)を調べる方法ってあるのかな?
自前のプログラムが、どれくらいメモリを消費するか調べたいんだけど。
これはDirectXのAPIじゃなくてWindowsのAPIとして用意されてるのかな?
959 :
_:03/06/26 23:11 ID:j8CcaA+E
>>958 i810みたいなのがあるから、簡単にはわからないみたいよ。
一度チャレンジしたことがあるんだけど、正確な数値は得られなかった。
>>957 フォント程度ならアルファが無くても平気だょ?
そしてフォント以外の部分も塗りつぶされる
963 :
名前は開発中のものです。:03/06/27 21:33 ID:3azb0OQf
フォントは意外と強敵だよ。
綺麗に出そうとするとこれがまた難解でな。
なんか透過処理するにはαが絶対必要だと思い込んでる奴多いな。
フォントのアンチエイリアス処理は特許になってなかったっけ
>>966 勘違いかもしれん。MSがtruetypeのレンダリング処理のどこかに
特許を持ってるか何かで、XFree86関連のtruetype対応が一部止まって
るとかいう話を聞いた
Appleの特許じゃない?
Apple、TrueType、特許で検索すると記事が見つかる
結局どうなったのか知んないけど
969 :
名前は開発中のものです。:03/07/04 22:02 ID:Mh/sei2x
DirectX8で平行投影をするにはどうすればいいのですか?
970 :
_:03/07/04 22:12 ID:B5C7015r
>>969 1. マルチポストかおめー
2. ヘルプちゃんと読め
972 :
名前は開発中のものです。:03/07/05 11:52 ID:97/cMruB
視点移動の質問です
D3DXMATRIX m_matView;//以前のビュー行列
D3DXMATRIX m_matCLocal;//カメラローカル行列
D3DXMATRIX matR;
D3DXQUATERNION q;
D3DXVECTOR3 m_vYPR;
D3DXMatrixIdentity(&m_matCLocal);
D3DXQuaternionRotationYawPitchRoll(&q,m_vMovYPR.x,m_vMovYPR.y,m_vMovYPR.z);
matR=m_matView;
matR.m[3][0]=matR.m[3][1]=matR.m[3][2]=0.f;
D3DXMatrixRotationQuaternion(&matR,&q);
m_matCLocal=m_matCLocal*matR;
これだとy軸眺めたときにヨーがロールになってしまうんですが
なんか間違ってますか?
クォータニオンってジンバルロック無いと思ってたのに・・・
ご教示お願いします
これってYPRに相当するQuaternionを作ってるんだよねえ・・・
YPRで管理すること自体がジンバルロックの原因だということを理解していない?
974 :
無料動画直リン:03/07/05 12:12 ID:F0qUjL+p
975 :
972:03/07/05 12:22 ID:XM0AoxQ8
>973
オイラー角管理になってしまうからですか
クォータニオンのみで管理するんですか・・・分かり難いなぁ
他の方法を考えて見ます巣
976 :
名前は開発中のものです。:03/07/05 16:38 ID:7s13lWZW
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
ネットで稼ぐならこれ。完全無料!!
リンクスタッフになれば小遣い稼ぎができます!!(右上に登録画面があります)
[報酬について]
クリック報酬・・・1クリックされる度に10円の報酬
バナー紹介料・・・リンクスタッフ登録の度に1000円の報酬
キャンペーン・・・今なら登録するだけで1000円プレゼント
間接報酬・・・紹介者が得た報酬を何割か加算いたします
ボーナス・・・優秀サイトには、報酬に応じてボーナス有り
単純に考えて1日100人クリックしたとすると、100人×10円×30日=30000円(一ヶ月)
そこらへんの掲示板に貼り付けていけば100クリックなんてスグです。
その他、自分の貼り付けた広告から誰かがスタッフになると1000円もらえるので
1日5人スタッフを紹介できたとして1000×5×30=150000円
30000+15000=180000!!間接報酬などもありますので一ヶ月に10万円以上は稼げます!!
http://www12.ocn.ne.jp/~sihori/com.html ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
977 :
名前は開発中のものです。:03/07/05 21:03 ID:DVozr+6k
行列関数について 初歩的な質問です。
D3DXMATRIXpt;
D3DXMatrixIdentity(&pt);
pt._41=0;
pt._42=0;
pt._43=-1;
D3DXMatrixRotationX( &pt, D3DXToRadian(90) );
カメラ位置はz-4 方向は000とします
手前の点を X軸に沿って上向きに90度回転
ptの値の変化は_41=0 _42=1 _43=0 というのを期待したのですが、(x0 y1 z0)
実際は別のフィールドに値が書き込まれ_41 _42 _43には0が書き込まれます。
回転後の座標を得る為にはこの結果を、さらに何かの関数を通さないといけないのでしょうか?
それとも根本的に間違っているのでしょうか?
初歩的な質問ですみませんが教えてください。
978 :
直リン:03/07/05 21:12 ID:F0qUjL+p
>>977 なんで回転行列を作成する関数で計算結果が出るんだ?
ついでになんで回転させると座標が変わるんだ?
お前の地球儀は回転させるとどこかに吹っ飛んでいくのか?
981 :
無料動画直リン:03/07/05 23:12 ID:F0qUjL+p
982 :
名前は開発中のものです。:03/07/05 23:44 ID:DVozr+6k
>>979 980
D3DXMATRIX pt,pt2,pt3 ;
D3DXMatrixIdentity(&pt);D3DXMatrixIdentity(&pt2);
pt._41=0; pt._42=0; pt._43=-1; //惑星座標
D3DXMatrixRotationX( &pt2, D3DXToRadian(90) );//原点で回転
D3DXMatrixMultiply(&pt3,&pt2,&pt);
となると、まず原点(公転)で回転してそれを惑星と乗算すると良いのですか?
これでも0、1、0にはならないのです。
何故なのでしょうか? あほな私に教えてください。
983 :
名前は開発中のものです。:03/07/05 23:57 ID:bi3MZju7
>>982 行列の平行移動成分と、ベクトルの座標を混同してるんじゃねーの。
>971
聞くのは一時の恥
聞かぬは一生の恥
>>985 わからんやっちゃな。マルチポストはまた別の恥だ。
つーか、もう別の場所で答えもらってるんだから大人しくしとけ。
>>982 どうしても0,1,0が欲しいのなら
D3DXMatrixMultiply(&pt3,&pt,&pt2);