トップページgamedev
1001コメント305KB

鬱だ氏のう DirectX (Part 3)

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆WMpzjIm. 01/11/07 16:56ID:???
DirectXについてマターリと技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html  (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/   (Part 2)
0018名無しさん@お腹いっぱい。01/11/12 20:29ID:5s6Lshiz
>>17
マジすか?
英語マニュアル読めないからワカラン。
0019名無しさん@お腹いっぱい。01/11/12 20:43ID:???
Win98はサポートするので問題ナッシング。
00201701/11/12 20:43ID:???
日本語のダウンロードページにも書いてありますよ。
http://www.microsoft.com/japan/developer/directx/downloads.asp
0021名無しさん@お腹いっぱい。01/11/12 20:49ID:???
>>20
あ、SDKの話か。汎用ランタイムが95切り捨てたのかと思ったYO!
0022名無しさん@お腹いっぱい。01/11/12 21:02ID:???
ついでに98x1も切り捨てられてるな。
0023名無しさん@お腹いっぱい。01/11/12 21:08ID:???
>>22
98x1はDirectX8と無関係になったんだよ。完全に。
002401/11/12 21:19ID:b2SUcAxd
DirectX 8.1 では Graphics、DirectShow のアップデートと、DirectInput、DirectPlay のバグ フィックスが行われています

とあるが結局のところ何が変わったのだろうか?
英語が読めないのもつらいな・・・
0025名無しさん@お腹いっぱい。01/11/12 21:21ID:???
>>24
変わったというより、直した、ということかも。(w
0026神@お腹いっぱい。01/11/12 21:29ID:???
MSがPC98を捨てたのではなく
PC98がMSに三行半を突きつけたのだ
0027名無しさん@お腹いっぱい。01/11/12 21:38ID:Nj12cbSN
これ見る限り、Win95用はでてないよな > 8.1
http://www.microsoft.com/japan/directx/homeuser/downloads/default.asp
00282101/11/12 21:42ID:???
>>27
にゃぁぁぁ!!切られてるYO!!
0029_01/11/12 22:03ID:K6hf8hPr
Win2000で、TVつけるとダウンしてたのが治った。
8.1まんせ〜(;▽;)/
003001/11/12 22:06ID:b2SUcAxd
>>29
おお、よかったですね〜
おめでとう!!
0031名無しさん@お腹いっぱい。01/11/12 23:16ID:???
>>29
すげぇ、漏れと全く逆だ!おいらは8.1入れたらみごとにTVでブルースクリーン。
おのれリードテックめ!もはやドライバサポートすらなくなったわい(ワラ

それでもおめでとう〜。
003201/11/12 23:57ID:b2SUcAxd
D3DX DrawTextのバグが直ってるよ〜
やった〜

自分におめでとう!!
0033_01/11/13 02:10ID:4oFYuP+X
>>32
SDK落としてリビルドしたの?
いいなあ、落とせる環境の人は。
とりあえず、あけおま!!
0034名無しさん@お腹いっぱい。01/11/13 09:21ID:???
ADSLならSDKすぐ落とせるよ。
Cマガの役割は終わったよ。
0035名無しさん@お腹いっぱい。01/11/13 10:42ID:???
ISDNで落としたけど中のファイルが途中で壊れてて解凍通らない
鬱だ氏のう...
0036名無しさん@お腹いっぱい。01/11/13 12:33ID:???
8.1に付属のMax4用プラグインでスキンデータが取れた方います?

ReadMe通りリコンパイルしてもスキンデータ取れず。鬱だ。

Max4.2 CS3.2使用。
0037ラム01/11/13 13:26ID:mgbUHY3r
ageるっちゃ。
0038名無しさん@お腹いっぱい。01/11/21 22:36ID:J9hq8ojk
すっかり見捨てられてる感のあるこの伝統的スレ。一応あげ
0039名無しさん@お腹いっぱい。01/11/21 22:59ID:PMrX3bZu
Lockというものの概念が分かりません。
メモリブロックに何かする、という感じでしか理解できてません。
どなたか説明をば・・・・お願い・・・。
0040名無しさん@お腹いっぱい。01/11/21 23:08ID:zJxGH1jK
俺が今からサーフェスいじくるから、その間他のヤツは触んなゴルァ(゚Д゚)
……ってとこじゃないです?
00414001/11/21 23:09ID:???
他のヤツってのは、別のスレッドだったり
ハードウェア(ビデオチップ)のレンダリング機構だったり。
0042名無しさん@お腹いっぱい。01/11/21 23:15ID:PMrX3bZu
>>39
ありがとうございます。
ほっとくといじられてしまう可能性があるんで
他からいじくれないように鍵をかけるってことでいいでしょうか。
ようやく理解できました・・・
004339、4201/11/21 23:17ID:???
すいまへん。>>40さんありがとうございます。
00443601/11/22 14:41ID:???
放置されっぱなし・・・鬱だ。

だれかMax4.2使ってる奴いないのかよぅ!ヽ(`Д´)ノ  ウワァァァン!
0045名無しさん@お腹いっぱい。01/11/22 16:24ID:???
困っています。激しく困っています。

Direct3D8: (INFO) :MemFini!

このエラーは何なのでしょうか?どなたか教えてください!
0046名前は開発中のものです。01/11/23 05:04ID:???
こういうメッセージボックスがでるのですが、

-----------------------------------
エラー内容
 Error : -2005532477 on
CreateDevice
-----------------------------------

エラーコードの見方がわからない・・・
0047 01/11/23 12:05ID:???
radeon8500使ってる人いる? nvidia製のデモとか、Shaderツール
って使えるのだろうか?
デモとかプロテクトかけてないだろ〜な〜?

ATIのデモはGF3で動かなかった(ま、コチラは8.1非対応だから)
0048 01/11/23 12:06ID:???
エラーコードを調べるツールが8.1からついてこなかったっけ?
それ以前は関数であるよ。調べれ
0049名前は開発中のものです。01/11/23 14:08ID:3FAfwpoR
>>47
DirectX系のデモなら結構動くっぽい。
OpenGL系のデモはハードウェア依存な命令(NV_*)があるものが
多いのでダメっぽい。
0050 01/11/23 15:24ID:???
>>49 サンキュ
つか、俺GF3ユーザーなんだけど、下のデモ見たいなぁと思ってさ〜

http://www.ati.com/na/pages/resource_centre/dev_rel/demos.html
0051名前は開発中のものです。01/11/23 15:59ID:???
GF3とRADEON8500持ってるが常に差し替えまくってるよ。
面倒くさいね。
0052名前は開発中のものです。01/11/24 01:52ID:???
>>51
ドライバー周り 怖そう。
とりあえず、新しいPCを組んだ方が良いと思われ
0053名前は開発中のものです。01/11/25 08:41ID:u25RwZVo
age. つーか初心者歓迎スレで流されてしまった(泣)ので質問。

DirectXでビデオアダプタの頂点キャッシュの量を調べたいんだけど
どうすればいいの?
CONST_D3DXMESHOPTで、D3DXMESHOPT_VERTEXCACHE っての
があるからDirectXから参照できるのは確かなんだろうけど…。

あとGeforce/2/3 以外のTnLハードウェア(Radeon7500/8500とか
MatroxG550とか?)の頂点キャッシュの量ってどれくらいあるの?
0054名前は開発中のものです。01/11/26 01:42ID:???
>>53
プログラム上で頂点キャッシュの量を調べるのはDirectXでは無理だと思うよ。
D3DXMESHOPT_VERTEXCACHEは「ヒット率を向上させる」と書いてあるだけで、
最適にするとは書いてないから、適当にキャッシュにヒットするように並べ替え
てるだけじゃない?
それに頂点キャッシュの数だけ分かっても、アルゴリズムが分からないと意味が
ないと思うよ。まぁ、普通はFIFOだと思うが。
0055名前は開発中のものです。01/11/26 03:06ID:lv2Xao9j
エラーコードを調べるツールが8.1からあるみたいですが、単品で
手に入らないでしょうか?

個人的にDirectX8はまだ使う気はないです。
今はDirectX7で十分。
0056名前は開発中のものです。01/11/26 05:31ID:???
DirectX7には対応してないと思うが。
005701/11/26 07:24ID:+2l/lKyZ
DirectX8でDIRECT3DDEVICE8へのポインタ(LPDIRECT3DDEVICE8)への
ポインタ(LPDIRECT3DDEVICE8* pd8)を消すときってリリース関数を
使わないといけないんでしょうか。あとこういうポインタの使いまわし
ってマズイんですか?
0058名無しサソ01/11/26 07:57ID:???
>57
 COMについて調べてみよう。Releaseは何をしているのか、
というのが分かったらどうすればいいのか分かるよ。

 「参照カウンタ」はどこで加算されるか、もしくは減算されるか、
というのを理解するのがポイント。

 と知ったような口をきいてみる。
0059名前は開発中のものです。01/11/26 08:46ID:???
そもそもDIRECT3DDEVICE8へのポインタへのポインタって普通使う?
関数の引数なら分かるが。
57はポインタに対する理解が足りなそうだから、そんな複雑なことは
やめて置いた方がいいと思う。
006001/11/26 08:46ID:???
>>58
ありがとうございます。
調べてみます。
006101/11/26 08:48ID:???
>>59
それです。関数で使おうとして。
ポインタの勉強し直します・・・
00625301/11/26 09:59ID:hxuvWaP4
>>54
なるほど…、つまり
・頂点キャッシュ自体がDirectXではっきりと定められたナニがあるわけではない。
・DirectX自体のOptimizedMeshも厳密ではない。(確かにincrease the cache hit rate…
と書いてあって optimized ...とは書いてない。)
ということですか?
ビデオアダプタ毎に頂点キャッシュを考慮したインデックスのストリップを生成する、
という野望はここに潰えました。(w 多謝。
0063名前は開発中のものです。01/11/27 14:14ID:1vtcUAvO
Xfileで読みこんだ複数キャラの管理ってどうやるもんなんですか?
メッシュやらなんやらのオブジェクト(構造体?)を複数作って、
そのアドレスを格納する配列変数を用意しようと
思ってるんですけど、どうなんでしょう・・・。
00646301/11/28 19:28ID:???
できました・・・。何回かモデルがぐにゃぐにゃっとしたんで
Windows氏に大ダメージを与えてるかも・・・。
0065名前は開発中のものです。01/11/29 17:43ID:???
>>22-23
パッチ当てればインストールできるけどね
0066名前は開発中のものです。01/12/01 19:23ID:VdJIOFPJ
スレageエージェント
その名もAGEnt(アーゲント)
0067名前は開発中のものです。01/12/01 19:25ID:???
>>66
人型エージェント兵器?!
なんてこった・・・


というより元気0ですね。このスレ。
0068名前は開発中のものです。01/12/02 06:35ID:iC96WwYm
というわけで、こちらをあげます
0069名前は開発中のものです。01/12/02 19:37ID:???
やっとキャラが動いたよ。でももうイヤだ。
0070名前は開発中のものです。01/12/03 14:33ID:???
さて・・・
DirectXの勉強勉強・・・
0071名前は開発中のものです。01/12/04 01:48ID:???
エラーでまくると鬱で氏にたくなります・・・
まぁ一つずつなおしていくのも快感なんだけど
0072初心者(A)01/12/04 17:42ID:RhHCipx6
ここは初心者の状況報告スレ??
・・だとうれしいな。
とりあえず、マップオブジェクトの当たり判定設定法で
詰まってます。どうしょっかなぁ。詰まってるけど楽しい。。。
0073名前は開発中のものです。01/12/04 18:00ID:dLjsBJIC
8.1SDKインストールできない・・・
1608: Unable to create InstallDriver instance
って出てインストールシールド終わっちゃいます。
Win2000ですが。8.0aは入るのに・・・鬱だ
0074名前は開発中のものです。 01/12/04 18:59ID:???
ここって「初心者はここで聞け!」スレ無いの?
まあ、この程度の利用者数なら分離しなくていいだろうけど。
0075名前は開発中のものです。01/12/05 04:47ID:s6xIWrxU
>>61
C++でやってるでしょ?
ならダブルポインター(**)で関数に渡さず、参照(&)で渡しなさい。悩まなくてすむから。
DirectXの関数がダブルポインターを使ってるのは、Cでも使えるように、という配慮。
C++使ってるならそんなところを真似ることはないよ。
007675追記01/12/05 04:50ID:???
こんな感じ
Create(LPDIRECT3DDEVICE8 **pd8) {

Create(LPDIRECT3DDEVICE8* &pd8) {
0077名前は開発中のものです。01/12/06 00:11ID:lsy8aQar
元気ないなぁ、DirectXとは別の次元で苦労してるから
DirectXで苦労し始めたらお世話になります。
0078名前は開発中のものです。01/12/06 00:30ID:???
うむ。吾輩もWinXP環境構築中で動けん。
8.1が最初から入っておるのかこれは。
0079名前は開発中のものです。01/12/08 11:50ID:8/HBzjJB
Direct Drawの質問をしたいのですが、このスレで質問させてもらってもいいんでしょうか?
0080名前は開発中のものです。01/12/08 14:54ID:???
>>79
いいと思うよ。おれはあんまりわかんないけれどね
0081名前は開発中のものです。01/12/08 21:45ID:???
Direct Drawの質問をしてもいいのかという質問をしたいのですが、
このスレで質問させてもらってもいいんでしょうか?
0082名前は開発中のものです。01/12/09 23:30ID:3yOdEVMh
DX8で、ようやく弾やら建物やら敵が出てくるようになったのですが
2000ポリゴンで60fps〔50台〕切ります。これは不味いんでしょうか?
平行光源を使っただけのかなり単純な表示で、です・・・
どれくらいがゲームとして普通か教えて下さい。
0083aa01/12/09 23:40ID:9FnPiTzc
>>82
俺も知りたい。最適化の方法、、誰か挙げて。
自分で思う所は、

DrawPrimによるGPU待ちとLockによるCPU処理の平均化。
Prim種類の分類等、バッチ処理
テクスチャ切り替えを頻繁にやらない。
’’サイズ大き過ぎないようにする。

ぐらいか、、。
0084名無しサソ01/12/09 23:43ID:???
>82
 表示の方法によると思う。Xファイルを読み込んで表示して
いることを前提にすると、D3DXMESHをサンプルのやり方の
まま使うと、オブジェクトの階層が深いとポリゴン数の割に
どんどんFPSが落ちていくよ。

 当方もサンプルで6000ポリゴン程度の物を出しただけで
40fpsとかになったし。ちなみに、PentiumIII728MHz、G400・32MB。
OptimizedMeshサンプルを走らせると、最高で3MPolygon/sec弱出る。
速度に関する質問をするなら、自身の環境を書いて置いた方が
良いと思うよ。
00858201/12/10 00:15ID:???
>>84
すいません・・。環境はこんなかんじです。

CPU:PentiumV 700Mhz
ビデオカード:NVIDIA GeForce2 MX/MX400 VRAM 64MB
メモリ:180MB

呼び出しが重なると遅くなる、ってことでいいでしょうか?
出来るだけ浅くしてみます。ありがとうございました。
0086名無しサソ01/12/10 13:13ID:???
>85
 プログラムで最適化するのが面倒な場合は、そもそも
階層の深いモデルを使わない、という手もある・・・かもしれない。
手抜きです。ゴメソ。
00878201/12/10 14:27ID:7ZQwqnD1
>>86
そうですか・・
なんかLOCKをして頂点データを読むと、
ちゃんとUNLOCKしたのに(メインループの前の前処理内で)
またfpsが20ほど下がっちゃいました・・・。
これも階層に関係してるのでしょうか?
0088名前は開発中のものです。01/12/10 14:31ID:???
>>87
SDKのヘルプとかMSのFAQとかちゃんと読んだ?
0089名無しサソ01/12/10 16:47ID:???
>87
 ここのD3Dスレでも同じ話題が出てたんだけど・・・Unlockしても
スピードが下がるという表現が意味不明。Unlockしたからといって
スピードが保てるわけでも無し。というか付けないとエラーが起こる。
0090名前は開発中のものです。01/12/10 18:04ID:???
時々Unlockしてなかったりする87タン萌え。
0091_01/12/11 01:23ID:ZXve+/Jb
誰か、indexバッファの使い方、教えて。
ドキュメント読んでも、よく解らない(引数の説明等が)
DrawIndexedPrimitiveなんか特に。
なんとなくは、判るというか、動いてるけど、気持ち悪いので。
お願いしまっす。
0092名前は開発中のものです。01/12/11 01:26ID:???
>>91
何がわからないのかわからないんだが(w
とりあえず、インデックスは頂点の番号を指しているのはOK?
0093_01/12/11 03:04ID:ZXve+/Jb
>>92
>インデックスは頂点の番号を指しているのはOK?
と言う事は、頂点バッファと1対1で対応(要素数が同じ)て事ですか?
番号は、Uint16頂点以下が、D3DFMT_INDEX16、以上が、32って事ですよね?多分。

で、
lpD3DDEV->SetIndices( pIB, 0 );
でストリーム番号を指定(合ってます?)

で、
DrawIndexedPrimitiveの2、4番目の引数が良くわかりません。
DrawPrimを複数に分けてコールする際のindexだと思うんですが、
1つのプリミティブで4頂点使ってたら、
(頂点数*FVFタイプ)のバイト数指定、、て事ですか?
0094_01/12/11 03:09ID:ZXve+/Jb
後、もう1つだけ、、(すんません)

ストリームを複数作って、片方は静的なバッファ、頂点座標(D3DFVF_XYZ)、
もう1つは、動的なバッファ(D3DUSAGE_DYNAMIC)、
同じく(D3DFVF_XYZ)こちらはポジション用、、とすると、
これらはラスタ化の時に、自動的に合成(加算?)されるのでしょうか?
0095名前は開発中のものです。01/12/11 04:22ID:???
>>93
2番目は頂点バッファの何番目の頂点から使うか。指定した頂点がIntexの0番になる。
これは主に1つの頂点バッファに複数のモデルデータを入れておくときに使う。
頂点バッファはオーバーヘッドがかなりあるから(2048バイトだっけ?)、小さい
バッファを沢山作るのは無駄が多いので、頂点フォーマットごとにまとめるようにする。

4番目はIndexの範囲指定だけど、Indexの一部を描画するってことはあまりないから
0入れとけば良し。

>>94
言ってる事が意味不明。ポジション用って何?
0096名前は開発中のものです。01/12/11 23:07ID:???
>>82
GeForceのドライバーを換えてみたら?
http://www.nvidia.com/view.asp?PAGE=drivers
うちは似たようなマシン構成で1フレで3万ポリは固い。
もちろんストリップぐらいやってるが。
0097名前は開発中のものです。01/12/12 00:15ID:???
円とバウンディングボックスの当たり判定ができました。
もうイヤだ!!
0098名前は開発中のものです。01/12/12 00:53ID:???
それぐらいで嫌がってたらプログラマーは出来んぜ。
仕事でやってると将来が無さそうなのでイヤだが。
0099_01/12/12 01:21ID:u1VHByE9
>>95
サンクスです。大体w理解出来ました。4番目の引数使うと、どのような
効果があるんでしょうね。取り敢えず、0いれときます。

>言ってる事が意味不明。
すんません。聞かなかった事にして下さい。w
0100_01/12/12 03:04ID:u1VHByE9
取り敢えず、1秒300万個ぐらい、スプライトが表示出来るようになりました。
GF3でw
MESHのサンプルでは、1秒に1500万triぐらい出てるけど。w(vキャッシュなしで)
でも、1スプライト2triだし、tri-listだし(strip無理ですよね?)、
毎ループ、全頂点Lockしてるし、こんなもんかな?
多分、ほんとはもっといくとは思う、、。
0101名前は開発中のものです。01/12/12 06:44ID:???
>>100
やっぱりXファイルは一つにまとめてインデックス読み
するのが基本ですか?
0102_01/12/12 08:48ID:u1VHByE9
>>101
今回は、担当じゃないから、あれだけど、1つのSTRIPでやるのが、
良いみたいよ。重複する頂点があっても、その方がいいとか、、。
でも、複数のTEXTURE貼ってたりすると、難しいかも。

Meshのサンプル見たら、Vキャッシュにヒットした場合、一機に+500万
いってたんで(1秒2200万ぐらい)どうなんだ?て感じだが。
暇があったら調べてみるよ。
0103名前は開発中のものです。01/12/12 19:44ID:???
>>102
解答ありがとうございます。
2200万て僕には考えられませんけども(汗
ゲーム速くするため、色々やってみます。
0104名前は開発中のものです。01/12/13 16:52ID:7ycqn6lq
ShadeでXファイルをつくりたいのですが
何かいいお知恵を拝借できないでしょうか?

shdからshadeでDXFにしてから、Xへ変換したのですが
どうしてもD3Dビューで表示されません・・

ShadeでMesh作ってる方、お願いします
0105名前は開発中のものです。01/12/13 18:32ID:???
>>104
Shadeで作るな、と言われそうだね。

Shadeはポリ数が多くなってリアルタイムレンダリングには向かないんじゃないかなあ。
DXFを介している時点でアニメ情報やUV情報なんか消えていそうだし。
とりあえず、単純なモデルをテキストXに変換させてみて、
データを読んで何がおかしいか調べてみるといいかもよ。
メッシュが裏返ってたり、スケールがものすごく違ってたりするのかも。
0106名前は開発中のものです。01/12/13 21:51ID:d41h5h24
>>105さん
ありがとうございます。
やはり鬼門ですか・・・・

難しいなぁ・・・ ナムナム
0107名前は開発中のものです。01/12/14 13:20ID:EZLqVsis
Shade脱落です・・・

lightwave3Dに乗り換えます・・
0108名無しサソ01/12/15 01:24ID:???
 参考までに。DXFの3DFACEフォーマットは、多角形の
各xyz座標をダラダラと羅列しているだけの素敵な仕様だよ。
当然、UV座標や法線を持ち合わせているわけではないので、
独立頂点で分けて作った筈のエッジも潰れてしまう。

 というわけで、DXFから直接Xファイルを作るのは出来るだけ
避けた方が良いと思う。
0109名前は開発中のものです。01/12/16 05:25ID:8r+MK5UR
Cの基礎本レベルが終わった程度のプログラミング能力の奴がDirectX
を使おうとしたら、どういうのがいいですか?

 1、諦めろ。
 2、むしろゲーム作成支援ソフトを使う。
 3、頑張ってEasyLinkLibraly を導入して間接的に。
 4、DXだけ学び、DXだけでゲームを作る (…できるの?)
 5、DX、WinAPI、VC++、その他一式を全て究めて攻略。

 とりあえず5はやだ。
0110名前は開発中のものです。01/12/16 05:29ID:???
>>109
6.SDKのサンプル弄ってみる。
0111名前は開発中のものです。01/12/16 06:10ID:/+Yh7d/w
>109
110が正解っぽいな。 まあどもみち、5を選ばざるえないんだろうが
最初から気張って、つまづいた拍子にやる気をなくすより
サンプルでも弄ってなさいってこった。
0112名前は開発中のものです。 01/12/16 10:51ID:???
 WinAPIを極める必要はあんまり無いと思うけど。あんなの
そのつど調べて覚えていけばいいんだし。
 やっぱC++でプログラム書きまくって慣れておくことだろ。
0113NAME OVER01/12/16 17:56ID:???
directx8でx、y座標(zは無視)を指定して画面に
ポリゴン&スプライト表示することはできますか?
0114名前は開発中のものです。01/12/16 19:03ID:???
>>113
できる
0115>>10901/12/16 19:25ID:Ar8VngeJ
俺の場合、Cは一通り書ける状態で、
VC、C++、D3D8、をやってた。
2週間もあれば、読み書きぐらいは出来ると思うよ。
どういう設計が1番か?てのは、わからないけど。
0116名前は開発中のものです。01/12/16 22:30ID:???
>>109
絶対イジッタほうがいい。
DX7の頃は使い始めが異様に難しかったけど、
8からは初期化も簡単、すぐに画面に表示できるような
作りになってる。画面になんか出ればイジリがいもあるでしょ。
0117名前は開発中のものです。01/12/16 22:46ID:CihImbig
>>109
とりあえず4、6の組み合わせで十分ではござらぬか。
追々必要なら5にも手を出すと。
■ このスレッドは過去ログ倉庫に格納されています