Direct 3D
■ このスレッドは過去ログ倉庫に格納されています
0001.
01/11/09 17:06ID:wrfy6OtCとりあえずDX8以降は初期化が簡単になったり関数が変わったり
結構大幅に変わりましたがその辺も踏まえてお願いします。
0074名無しさん@お腹いっぱい。
01/11/13 18:34ID:???システムメモリのAGPメモリに置いてある頂点バッファから
グラフィックチップがダイレクトに読み込んでくれるメカニズムだよ。
AGPメモリ以外のシステムメモリにある頂点バッファでは駄目だけど。
AGPメモリに頂点バッファを置くように指定するのが
CreateVertexBufferのフラグの組み合わせで
PointSpritesの通りにやればOK
0075名無しサソ
01/11/13 23:21ID:???成る程。AGPメモリに置けばビデオカードからはVRAMとして
見えて、実際はメインメモリだからLockしての書き換えもそこまで
遅くはならない、と。ありがとう、完全に疑問が解けたよ。
となると、書き換えが頻繁でも充分VertexBufferは使えるかな。
0076レックス
01/11/18 00:50ID:k3asQ08Vアニメーションさせる場合は、パーツをバラバラの
状態で読みこんで自分で一つ一つモーションを付けるものなんでしょうか。
他に効率のいい方法があれば教えて下さい。
0077名無しさん@お腹いっぱい。
01/11/18 01:28ID:IsgYCSXR(階層構造と行列のデータ群)それをそのまま再生させるよ。
で、モーションと別のモーションの間は補間でつなぐ。
モーション中に別のモーションに移りたいことがあるからね。
あとは例外的に特定のパーツに差分行列かけて個別に動かすこともある
ケースバイケースばい。
0078レックス
01/11/18 01:37ID:???そうやるんですか・・アニメXファイルが出せるモデラ
は高いんでゲームでは使わないのではと勘違いしてました。
ありがとうございます。
007977
01/11/18 02:48ID:???おれは自前ファイルだけど目で読めるテキストXファイルからモーション情報だけ
取り出させて使わせてもらうことがある。
逆にXファイルのケツに他のフォーマットから取ったモーション行列を
自分でくっつけてやればモデラが対応してなくてもアニメXファイルの出来上がりじゃないか?
0080名前は開発中のものです。
01/11/26 03:08ID:???0081名前は開発中のものです。
01/11/26 23:02ID:uAFlRpp20082
01/11/26 23:49ID:e4V2gjyGヘンテコXファイルなんていつまでも残してもしょうがないだろ〜
0083名前は開発中のものです。
01/11/27 00:13ID:???・拡張性はあるけど拡張は出来ないに等しい。
・ストリップ等、データの最適化をデータ段階で出来ない。
・テキストだとバカでかい。バイナリでもかなりデカイ
・読み込みが遅い。
・モーションデータを不動少数マトリクスで持つために無駄が多すぎる。
ま、こんな感じ?それにしてもリアルタイム系のモデル
フォーマットをどこかが提唱してくれないとそれそろ、個人で
手が届く時代じゃなくなってきたね。
0084名前は開発中のものです。
01/11/27 06:31ID:???http://www.xglspec.org/
0085名前は開発中のものです。
01/11/27 07:00ID:???とりあえず質問とかする前に最低限↓くらいは読んでおこうよ。(下の2つは暗記するくらいのつもりで)
ttp://www.microsoft.com/japan/developer/directx/techart/DirectX8faq.asp
ttp://www.microsoft.com/japan/developer/library/jpdx8_c/_dx_d3drenderstatetype_graphics.htm
ttp://www.microsoft.com/japan/developer/library/jpdx8_c/_dx_d3dtexturestagestatetype_graphics.htm
それと、DrawPrimitiveとDrawPrimitiveUPだけど、速度だけで言ったら
DrawPrimitiveの方が速いよ。適切な使い方をする必要があるけど。
確かにいちいちLockするのは面倒だし、使い方を間違えるとだいぶ遅くなって
面倒ではあるけど。得にTnL使用時は気をつけないとパフォーマンスがた落ち。
ただ、1はそこまで気にするような段階には見えんが。
0086名前は開発中のものです。
01/11/30 01:05ID:???0087名前は開発中のものです。
01/12/01 03:26ID:3MhhzyVSLightwaveのデータ形式なら比較的読み込みが楽なんで自前で読み込み
作ってもバチはあたらないと思うが、以下のライブラリがとっかかりには
なると思う。
http://www.dstorm.co.jp/dev/sdk/sdk.html
のObject, Sceneライブラリ。
もしLightwaveのデータを何も考えずに表示したいのなら、X形式にコンバート
すればよいし、自前のフォーマットを作りたいのならそれを改造するもよし、
直接読み込むような形であれば、親切なドキュメントとOpenGLのサンプル
プログラムを参考にしてみれ。全部ソース付きなので根気よく解析すれば
かならずわかるはず。
0088.
01/12/07 12:54ID:Wr0guOjeきたよ、毎度のごとく現れる高飛車君。
この程度っていうぐらいだったら自分で高度(?)な話題でもふってみれば?
0089名前は開発中のものです。
01/12/07 20:53ID:???「3Dやってるプログラマは人を小馬鹿にしたやつが多い」
と言われる。
0090名前は開発中のものです。
01/12/07 22:33ID:DT4mxdiM高度な話題振っても付いてこれる奴がいない(アマだから)
or付いてこれても書きこまない(プロだから)
0091名前は開発中のものです。
01/12/07 23:29ID:???0092名前は開発中のものです。
01/12/07 23:43ID:???ガイジンはプロもアマも出し惜しみしないあるよ。
0093名前は開発中のものです。
01/12/08 00:02ID:???下手な言い訳はやめなさい。
単に高度なネタ持ってないだけでしょ?オレモナー
0094名前は開発中のものです。
01/12/08 09:59ID:???そこが日本特有の長所でもあり短所でもあるな。
0095名前は開発中のものです。
01/12/08 15:21ID:???>ガイジンはプロもアマも出し惜しみしないあるよ。
アマだったら日本でも出し惜しみしてない良質なコンテンツが豊富にあるだろ?
プロに関しては、技術隠蔽するのは当然。それは海外も同じ。
ただ、海外はプログラマー社長が極めて多いので、
社長判断で勝手に公開している例が目立つ。
0096名前は開発中のものです。
01/12/08 21:46ID:???Stable Fluids使わせろやゴルァ
0097名前は開発中のものです。
01/12/09 01:04ID:???もし使ったとして、A|Wがお得意先の日本のゲーム会社を訴えるんだろうか?
0098名前は開発中のものです。
01/12/16 21:46ID:???レベルも人数もちがう。
まぁ、日本は少数精鋭ってことにしとこう。
0099名前は開発中のものです。
02/01/03 20:37ID:3/AaBPnv0100名前は開発中のものです。
02/01/03 22:50ID:???何、アげてんの?
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
じゃん。自分で計算なんてしてないだろ
■ このスレッドは過去ログ倉庫に格納されています