Direct 3D
■ このスレッドは過去ログ倉庫に格納されています
0001.
01/11/09 17:06ID:wrfy6OtCとりあえずDX8以降は初期化が簡単になったり関数が変わったり
結構大幅に変わりましたがその辺も踏まえてお願いします。
0101名前は開発中のものです。
02/01/04 01:50ID:???何、サげてんの?
0102名前は開発中のものです。
02/02/10 14:33ID:???0103名前は開発中のものです。
02/02/10 21:33ID:???ヴォケどもが。
0104.
02/02/12 21:05ID:9lA8tETCという事で質問させてください。
D3DXLoadMeshFromX関数でXファイルを読み込んだ後、
このオブジェクトに対して行列を設定するには(既にローカル座標は作っているのですが)
どの関数を使うのでしょうか。
とりあえずそのままだと座標(0,0,0)に表示されているのですが、、
0105名前は開発中のものです。
02/02/12 21:06ID:???うるせー馬鹿
0106名前は開発中のものです。
02/02/12 21:09ID:???質問はこちらへ
プログラム板
Direct3D
http://pc.2ch.net/test/read.cgi/tech/1011762546/
0107104
02/02/12 21:25ID:9lA8tETCそれってココじゃないんですか?
0108名前は開発中のものです。
02/02/13 04:05ID:NOxt2cqPオブジェクトに対し、トランスフォーム行列を設定するという認識がそもそも間違い。
D3DDeviceに対しトランスフォーム行列を設定し、
D3DDeviceに対し表示するメッシュを設定する、が正しい。
即ち、IDirect3DDevice8::SetTransform。これ最強。
0109なかまかな
02/02/22 18:51ID:Lhsx7X1+DXでサーフェースとして管理してる2Dキャラを、
D3Dで表示して、回転できるようにしたい。
DX8には、ハードウェアが対応してないようなので、DX7で。
まず、テクスチャを準備して、テクスチャサーフェースに割り当てた。
あとは、このサーフェースを、座標指定して表示すればいいと思う。
●今までのやり方
描画先エリア サーフェス
↓ ↓
ret=pDDSBack->Blt( &rect1, g_pDDS,NULL, 0, NULL );
●D3Dでのやり方
テクスチャサーフェス
↓
pd3dDevice->SetTexture( 0, g_pDDS );
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX,ddx_txv, 4, NULL );
今までは、rect1にピクセル座標(?)を代入してた。
D3Dでは、ddx_txv に座標を設定するらしい。
が、ヘルプ読んだが良くわからん。
どうやればいいか、分かる人教えてみないか。
0110↑
02/02/22 18:53ID:Lhsx7X1+ずれてる。こっちに差し替え。
描画先エリア サーフェース
↓ ↓
ret=pDDSBack->Blt( &rect1, g_pDDS,NULL, 0, NULL );
●D3Dでのやり方
テクスチャサーフェース
↓
pd3dDevice->SetTexture( 0, g_pDDS );
0111名前は開発中のものです。
02/02/22 21:30ID:???> D3Dで表示して、回転できるようにしたい。
この程度の処理が
> DX8には、ハードウェアが対応してないようなので、DX7で。
DirectX7で対応していて、DirectX8では対応していない
ハードウェアがなんなのか教えて欲しい。
そんなものあるの?
0112なかまかな
02/02/22 23:09ID:8+9pSBiPDX8だと、ハードウェアが新しくないと機能しないよね。
サンプルを実行したら、ダイアログボックスがでて、ソフトウェアモードで処理された。
DX7のサンプルは、ハードウェア(HAL)で動いた。
それとも、回転だけなら、今までのビデオカードでもハードウェアで動くの?
0113名前は開発中のものです。
02/02/22 23:15ID:???0114名前は開発中のものです。
02/02/22 23:32ID:lyn6ieNNつまんねぇネタだな
0115名前は開発中のものです。
02/02/23 02:42ID:???持ってるハードが古いorメーカが既に逝っててドライバが更新されてないとか(w
0116なかまかな
02/02/23 10:43ID:OEDm8gEoでもほかのDXのスレで、DX8は、ビデオカードとかが新しくないと
ダメだったようなこといってたよーな
0117名前は開発中のものです。
02/02/23 11:32ID:???板ポリゴンにテクスチャ張ってD3DXMatrixRotationXなどで
回転させてる。
0118名前は開発中のものです。
02/02/23 11:53ID:???DirectX8固有の機能でなければ古いドライバでも動作します。
動かないのはサンプルに新機能のデモが多いせいでは?
0119109
02/02/23 15:23ID:u/EZFxFIでもXファイルを表示するだけのサンプルも、ソフトで処理された。
>117
なんだ。D3DXってライブラリ、付属してるのか。別途かと思った。
最初からコレ使えば良かった。どうしようかな。
おわる。
0120プログラマになりたい厨房(ひきこもり)
02/03/05 01:37ID:???このスペックのPC使ってDirect3Dimモードで作成して動かしても普通に動くかな?
VRAMは8Mバイト3Dチップ付き
メモリ64MB
CPUはPentium2 400MHz
0121名前は開発中のものです。
02/03/05 02:36ID:vchuM+1Wチップの名称くらいかけ。
ちなみにi810とかsisみたいなチップ内蔵の場合、UMAの方で
不具合でるからむり。
0122名前は開発中のものです。
02/03/08 01:28ID:WfC+A2/Gピクセルシェーダーの紹介されている書籍やサイトをおしえてくださぃ・・・。
でかい本屋を何件か回ったのですが、どのDirectX8本も
プログラムよりの基本的な3D表示のことしか書かれていないので
Direct3D固有のビジュアル表現の可能性がわからないのです。
・・・なんとなく放置されそうですが(w)、よろしくおねがいします。
0123名前は開発中のものです。
02/03/08 01:32ID:???http://www.microsoft.com/japan/developer/directx/welcome/dsmsdn/directx08202001.asp
http://www.microsoft.com/japan/developer/directx/japan/dx8/DX81PS.asp
こんなのでいい?
0124122
02/03/08 01:50ID:WfC+A2/Gすばやいレスありがとうございます。
そーです。そんなのですー。
かなり詳しく載っているのでじっくりと見させてもらいます。
親切な方、ありがとうございました。
0125名前は開発中のものです。
02/03/09 01:34ID:???ttp://developer.nvidia.com/
24h遅れスマソ
0126名前は開発中のものです。
02/03/26 19:25ID:???困っているんですが原因と対処方法わかりますでしょうか
http://mrpackman.hoops.ne.jp/D3DLearn.zip
大きくて申し訳ないですがこんな感じです
0127名前は開発中のものです。
02/03/30 17:45ID:???Xファイルは何で作ってる?
ツールによっては反転させないとおかしな事になる
0128名無しさん
02/04/15 21:05ID:HOmtp0LM0129名前は開発中のものです。
02/04/15 21:59ID:???むしろDirectXがライブラリ。
0130名前は開発中のものです。
02/04/15 22:05ID:???http://www.geocities.co.jp/SiliconValley-SanJose/8134/
0131名前は開発中のものです。
02/04/16 05:10ID:rxWSPVEMD3DX8
0132名前は開発中のものです。
02/04/16 08:54ID:wEjyLAPYhttp://www.ah.wakwak.com/~jey/
こんなのもあるよ。オープンソース
0133名無しさん@お腹いっぱい。
02/04/25 09:07ID:KWIZFbqs0134名前は開発中のものです。
02/04/25 11:57ID:???以前は良く見たけど。
最近はめっきり見なくなったねえ
0135名前は開発中のものです。
02/05/03 13:47ID:.VzbAcu.0136名前は開発中のものです。
02/05/03 13:47ID:???0137名前は開発中のものです。
02/05/14 00:58ID:???〜DirectX 9、10bitカラー処理、Triple Headなど多くの新機能
http://www.watch.impress.co.jp/pc/docs/2002/0514/matrox.htm
遂に正式発表されたみたいだ。え?板チガイか!?
0138名前は開発中のものです。
02/05/14 18:40ID:iHWdaZs2いつごろになるのだろう?
0139名前は開発中のものです。
02/05/14 19:34ID:???XBOX2の頃かな?なんちて
0140名前は開発中のものです。
02/05/14 21:32ID:gp9yAFEg0141名前は開発中のものです。
02/05/15 00:13ID:???正直、DirectX6くらいな気がするよ……。
0142名前は開発中のものです。
02/05/15 00:14ID:???0143名前は開発中のものです。
02/05/15 03:32ID:1hyuY9to何をやっても駄目だぁ、エラーコードもUnknownだしィィ
つーか、もっと根性みせろやD3DXが!!例外出てる訳でもねーんだろ!!
それが出来ねーんならソース公開しろォォ!!
ID3DXSkinMesh::Convert系で作ったスキンメッシュはリストアで必ず失敗するしよォォォ!!
0144名前は開発中のものです。
02/05/15 14:05ID:???実際、7あたりが標準になってるんじゃない?
0145名前は開発中のものです。
02/05/16 04:32ID:???一度サーフェイスにレンダリングした後にコピーするしかありませんか?
0146名前は開発中のものです。
02/05/16 04:32ID:rbiFXjkI0147hoge3d
02/05/16 19:32ID:???IDirect3DTexture8::GetSurfaceLevel()でサーフェスを取得してSetRenderTarget()でレンダリング対象にすればいい、かな?
やってみたことないので参考まで。
0148hoge3d
02/05/16 19:42ID:???(141とは別人ですが・・・。)
開発ターゲットはDirectX8になってるにしても、
安全に使えるハードウェア機能としては6〜7くらいという気もする。
開発力が十分あって、ハードウェアごとにレンダラの構造変えられるなら話は別ですが・・・。
0149hoge3d
02/05/16 19:50ID:???KanoさんBBSの過去ログからこんなのを発見
>残念ながら、D3DUSAGE_RENDERTARGET を指定してあるテクスチャは
>D3DPOOL_DEFAULT にしか置くことができないため、LockRect は使えません。
>結局、残された唯一の方法が CopyRects というわけです。
だそうです。
ここらへんより
http://cgi3.tky.3web.ne.jp/~tkano/bbslog/bbslog12.shtml
0150名前は開発中のものです。
02/05/20 17:11ID:c/rCiqvYテクスチャの最大サイズってどうやって取得すれば
いいんでしょうか。
0152名前は開発中のものです。
02/05/20 19:28ID:???struct D3DCAPS8の
MaxTextureWidth および MaxTextureHeight
IDirect3D8::GetDeviceCaps使って
0153150
02/05/20 19:46ID:???それこそ求めていたものです
ありがとうございました!
0154hoge3d
02/05/29 21:40ID:???0155名前は開発中のものです。
03/02/06 23:40ID:MWXJs3Hk板ポリ表示すら出来ずに鬱入ってます。
初期化部分はクリアしたんですが、Viewportの設定や投影変換の所で躓いてます。。
いろいろ検索とかかけて調べてるんですが、出てくるのはDX5やDX8のサンプルなどで
DX7を解説してるようなサイトが見つかりません。
(見つかっても初期化の部分だけとか)
どなたかいいサイトご存知でしたら教えてくれませんか?
よろしくです。
0156名前は開発中のものです。
03/02/06 23:48ID:PXQKBNV4ttp://www.age.jp/~writing/wws/programs.htm#Direct3DIM研究日記
つか、DX8にしときなさい、と忠告してみる。9でもいいけど・・・。
0157155
03/02/06 23:57ID:MWXJs3Hkレスありがとです。
ここ前に見たんですが、レベル高くて結局基本的な事がわからずじまいで・・・。
DX8はHDC取得出来ないらしいので不便かなぁと言うのと、DX7の方が教材になるのではと思ってみたり(推測)。
9ではHDC取得が復活したらしいですが、出たばっかしなのであまり手を出したくないんですよね。
0158名前は開発中のものです。
03/02/07 00:17ID:PWiq5PrSちなみにテキスト表示が不便だってんならGetGlyphOutlineみたいなAPIもあるし
文字表示・入力のいい勉強になると思うけど。
0159155
03/02/07 00:36ID:teDPhK+Q取りあえず1度にいろいろな事覚えるのは出来そうにないんで3Dの基本的な部分を
やっつけていきたいと思ってます。
みなさんのレスから推測するに、やっぱり解説してる所って少ないんですね・・・。
0160名前は開発中のものです。
03/02/07 02:45ID:iTMeZkvn/  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
/ このスレは無事に /
/ 終了いたしました /
/ ありがとうございました /
/ /
/ ギコ猫より /
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ /
( ゚Д゚) /
( )つ
| | |
(__)_)
0161名前は開発中のものです。
03/09/26 16:07ID:4vP7z/gCαが使えないから結局自分でイメージ操作しなきゃいけないんだよね
0162名前は開発中のものです。
03/09/27 08:23ID:QTyrRSDvなんだか微妙にテアリングが出てしまいます。D3D8 の SWAPEFFECT_COPY_VSYNC がなくなった
関係でこれは避けようがないのでしょうか。P4 3.0G + Intel 865G オンボード VGA です。
SWAPEFFECT は COPY, FLIP, DISCARD の全て試してみました。。。
// 毎秒 60 回呼ばれる
UINT cSwapChains = pd3dDevice->GetNumberOfSwapChains();
for (UINT iSwapChain = 0; iSwapChain < cSwapChains; iSwapChain++) {
CComPtr<IDirect3DSurface9> pBackBuffer;
pd3dDevice->GetBackBuffer(iSwapChain, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer);
pd3dDevice->SetRenderTarget(0, pBackBuffer);
pd3dDevice->BeginScene();
...描画処理...
pd3dDevice->EndScene();
}
pd3dDevice->Present( NULL, NULL, NULL, NULL );
0163 ◆/lQMO72QVo
03/09/27 11:50ID:Zbl+k1GC0164名前は開発中のものです。
03/09/27 12:51ID:GhzIUXdMヘルプの「DirectX 9.0 への移行」をよく読むべし。
0165名前は開発中のものです。
03/09/28 01:19ID:a+akW1WNグリグリするにはどう書けばいいですか?
ヒントだけでもいいので教えてください
0166名前は開発中のものです。
03/09/28 01:52ID:tqpqQKn30167名前は開発中のものです。
03/09/28 16:37ID:n87Rw2yc1.BMPファイルから高さ情報を読む。
2.VERTEX構造体に取得した高さ(Y座標)とX,Z座標
(その他、必要なら法線ベクトルやUV座標)をセット。
後はゲームループ中で、
VERTEX情報をSetVertexShaderとかで指定して、DrawPrimitive系の
命令で描画する。
こんな感じかな? 1.の処理させるのが一番面倒くさいかも。
0168名前は開発中のものです。
03/09/29 14:29ID:LJ4M8ydvヘルプを読んだ限りでは、D3DPRESENT_INTERVAL_ONE を使えってことみたいですね。。
D3DPRESENT_INTERVAL_ONE でもダメっぽいので、このアダプダ(ってもオンボードだけど)
だとDirectX9 では無理ということであきらめておきます。
0169名前は開発中のものです。
03/09/29 15:50ID:u36ThLJ2∧_∧
∧_∧ (´<_` )
( ´_ゝ`) / ⌒i
/ \ | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ FMV / .| .|____
\/____/ (u ⊃
0170名前は開発中のものです。
03/10/01 15:26ID:P7z7yNso日本語版まだでないの?
0171名前は開発中のものです。
03/10/02 19:08ID:oRuaMBhVDX7で。
3Dの当たり判定って、モデルのワールド座標を使用すんじゃん。
このワールド座標は、D3Dで描画する際に、内部で算出してるじゃん。
だから、それを使って当たり判定をしたいんだけど、
このワールド座標を取得することができね。
座標変換だけを実行するProcesVerticsを使うと、
ワールド変換、カメラ変換、ひし形の台変換、スクリーン座標変換
だかまで自動的にやっちまうじゃん。
だから、ワールド変換までを行った座標を取得したいんだけど、できねよな。
自分で計算プログラム作ると、無駄な計算じゃん。
他のサイトを見ようとおもたらD3Dを扱ってるサイトのねーこと。
0172オレー
03/10/02 19:14ID:37nYM4r4ワールドマトリクスを自分でかけてD3Dに渡すんじゃねーの?
内部で算出ってなんだよ
0173名前は開発中のものです。
03/10/02 19:17ID:oRuaMBhV>ワールドマトリクスを自分でかけてD3Dに渡すんじゃねーの?
なにそれ。自分で計算すんのかよ!
描画は、
1.モデルデータ作る
2.D3DMATRIX作る
3.SetTransformで、ワールドマトリックスセット
4.DrwaPrimitiv
じゃん。自分で計算なんてしてないだろ
0174オレー
03/10/02 19:21ID:37nYM4r4>3.SetTransformで、ワールドマトリックスセット
素直に↑このワールドマトリクスとモデルデータをかけたやつで計算しろよ
0175名前は開発中のものです。
03/10/02 19:21ID:oRuaMBhVんなことしねーよ!オレーは、そうやってんのか?
0176オレー
03/10/02 19:22ID:37nYM4r4いや、してない。勘違いしたんだ
0177名前は開発中のものです。
03/10/02 19:23ID:oRuaMBhVだからそれやると計算が無駄になるつってんだろ
0178オレー
03/10/02 19:24ID:37nYM4r4俺はそうしてるけどな。描画しねーと衝突判定できねーなんてfps低かったら悲惨だしな
0179名前は開発中のものです。
03/10/02 19:26ID:oRuaMBhVそんときに算出されたワールド座標を流用すればいいでしょ。
それがムリなら、座標変換を、個別に指定できるべきだし
0180オレー ◆bJKvyv1OZU
03/10/02 19:28ID:gTkZ+ADQ俺のは描画より内部計算のほうが多くなる場合があるからツカエネエ
まーガンバレヤ
0181名前は開発中のものです。
03/10/02 19:39ID:oRuaMBhVゲームだとそうなるだろ。描画はD3DがHALで高速になるから、
そうするとネックは、あたり判定になる。
ツカエネ理由が分からんが。
座標変換は、モデル→ワールド→カメラ→プロジェクション→画面
になってて、これって、D3DMATRIXを使った同じ方法を取ってると思ってる。
変換の名前は変わっても、コード的にやってることは同じ。
で、最初に、モデル→ワールドだけを行わせる。このワールド座標はあたり判定に使用。
そのワールド座標を、DrawPrimitiveに渡して、DrawPrimitiveには、
ワールド→カメラ→プロジェクション→画面
の範囲を行わせる。
とできるべきだろう。
0182オレー ◆bJKvyv1OZU
03/10/02 19:52ID:Jlg/RJFoあああ。ProcessVerticesをもっと融通きかせろって話か!
そういえばそう書いてあるな。そうだな俺もそのとおりだと思うぞ。
しかしこの板は使いにく否
0183名前は開発中のものです。
03/10/03 02:47ID:TURYwUXuモデル(頂点データ)→ワールド→カメラ→プロジェクション→画面
で、いんだよね。
でも、計算順序って
まず、
ミックス = ワールド→カメラ→プロジェクション
で、最後に
モデル(頂点データ)→ミックス
だよね。
途中もなにもねーと思うんだけどどうよ?
0184名前は開発中のものです。
03/10/03 10:03ID:c42nfsnL物体の中心座標をいちいち透視変換しているんだけど
こういうのもHAL側で一気に変換してもらえんかなぁ…
0185名前は開発中のものです。
03/10/03 17:20ID:w9WLibzF0186名前は開発中のものです。
03/10/03 17:47ID:MBDW7FWT普通はそうだと思う。よっぽどヘボい実装でなければ。
あと、ついでにビューポート変換まで一緒にやっちゃうかもね。
0187名前は開発中のものです。
03/10/03 19:56ID:SyJm30wxいや、パイプラインとの兼ね合いの話でしょ
0188名前は開発中のものです。
03/10/12 03:20ID:KIwlleBuHALは、内部では1つの行列になってるから、分けると2倍遅くなる。
そもそも、当たり判定にモデルの描画用の姿勢は必要ない。
0189名前は開発中のものです。
03/10/13 07:30ID:8OV7MIl9>このワールド座標は、D3Dで描画する際に、内部で算出してるじゃん。
頂点のワールド座標の位置を求めるなら内部だけど
171が欲しいのはしてないでしょ?
SetTransform(D3DTS_WORLD,world);
とか突っ込んでるのがワールド座標じゃないの?
0190オレー
03/10/13 08:09ID:B3HQr2aaそれをあつかうDirectCollisionがあればいーんだよな!!
0191名前は開発中のものです。
03/10/13 11:34ID:bV77mRDF文脈的に変換後の頂点座標の事かと>ワールド座標
0192名前は開発中のものです。
03/10/14 05:51ID:tEdriz0H何をいってんだかよくわからんね。
>HALは、内部では1つの行列になってるから、分けると2倍遅くなる。
当たり判定用に、トランスフォームすると、描画用と当たり判定用で2つで、2倍遅くなる?
>そもそも、当たり判定にモデルの描画用の姿勢は必要ない。
姿勢ってなんだよ。中身をはっきしいえや。
てか、こいつ、なに気取ってんだよ。ダサ!!
0193名前は開発中のものです。
03/10/14 06:42ID:stBbbSEkお前こそオブジェクトのワールドの姿勢行列がほしいのか
オブジェクトの頂点ごとのワールドでの位置座標がほしいのか
はっきりしろよ。(どっちなんだよ、いえよ馬鹿)
188の内容が理解できない馬鹿はお前ぐらいだっつの。
(いやマジで)
0194名前は開発中のものです。
03/10/14 09:04ID:qbnFovZI当てられるほうの判定球とベクトルにワールド座標の逆行列をかけて判定。
2. 必要に応じて1の段階でリストアップしたポリゴンを詳細に判定
0195名前は開発中のものです。
03/10/14 20:48ID:tEdriz0H>お前こそオブジェクトのワールドの姿勢行列がほしいのか
>オブジェクトの頂点ごとのワールドでの位置座標がほしいのか
>はっきりしろよ。(どっちなんだよ、いえよ馬鹿)
アホだなこいつ。気取ってるのを指摘してやったら、さらにアホなことを、、、。
ワールドの姿勢行列は、オブジェクトごとに持たせるに決まってんだろが。
だから、それは3Dでのオブジェクトには不可欠なデータだから有って当たり前。
だから、欲しいっていってんのは、頂点ごとのワールドの位置情報しかないだろが。くだらねぇこと聞くんじゃねよ
0196つか188は俺じゃねーの
03/10/14 22:56ID:7kwhY3R9おまえ行列の演算順序を理解してねーのか?
183に詳しく書いてくれた人がいるだろ?なんで読まない?
普通は
ミックス = ワールド→カメラ→プロジェクション
モデル(頂点データ)→ミックス
というふうになってるんだよ。
ようはワールド→カメラ→プロジェクションをバラバラに頂点データにかけてるわけじゃなくて
ミックスした行列を一回だけ頂点データにかけてるんだよ。
だから途中も何もないんだよ。理解できたら返事しろアホ。
0197名前は開発中のものです。
03/10/14 23:46ID:tEdriz0H座標変換はDrawPrimiticeメソッドなどがよばれたら、
ワールド、ビュー、射影の順に座標変換が行われるって書いてあるが。
0198名前は開発中のものです。
03/10/15 00:11ID:LRGxbgsnそれは行列のかける順番(方向?)を強調したかっただけじゃねーの?
一度シェーダでも触ってみれば?
0199名前は開発中のものです。
03/10/15 00:33ID:zBR2pFHfローカル座標→スクリーン座標が一発で変換できるのが行列の偉いところ。
0200名前は開発中のものです。
03/10/15 01:38ID:EakjPa/S別に自分で座標変換した頂点を描画するなんて実装は誰だって理解して組めるだろ。
問題はそうじゃなくDirectXの機能で描画に使った部分を
自分が必要なワールドの処理に流用しようとしてアホな議論をしてる事だろ。
DirectXの仕様がそうなってない以上は、自分で用意して処理するのが当り前。
■ このスレッドは過去ログ倉庫に格納されています