トップページgamedev
987コメント315KB

鬱だ氏のう DirectX (Part 5)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものですた。02/07/23 00:32ID:DsnWt/i.
DirectXについてマターリと技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html  (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/   (Part 2)
http://game.2ch.net/test/read.cgi/gamedev/1005119775/ (Part 3)
http://game.2ch.net/test/read.cgi/gamedev/1016276254/ (Part 4)

コピペスマソ
0258名前は開発中のものです。02/08/07 23:05ID:???
DX8で
IDirect3DDevice8::CreateAdditionalSwapChainの
オモロい使い方てありまへんか
0259名前は開発中のものです。02/08/07 23:28ID:???
>>255
ライトの設定がおかしいとそうなった気がする
0260名前は開発中のものです。02/08/07 23:46ID:???
255です。
テクスチャ貼り付けちゃえば赤くできるのですが、ちゃんとマテリアル使えるようになりたいと思いまして。
ライトはつかっておりませんが、
InitRender関数内で
lpD3DDEV->SetRenderState(D3DRS_LIGHTING, TRUE);
とすると、画面上のポリゴンが真っ赤になってしまうのです。
じゃあ、球体を描画する前にTRUEにして終わったらFALSEに
しようとおもったのですが、そうすると球体が見えなくなってしまいました。
どうやら、テクスチャを貼り付けたポリゴンのみに作用しているようなのです。
0261名前は開発中のものです。02/08/07 23:52ID:???
255です。
アルファブレンディングの設定をFALSEにした後に描画したら
赤く表示することができました。
0262名前は開発中のものです。02/08/08 01:02ID:???
>>261
まさかとは思うが、透明度を0にしてないだろうな?
どんな色をつけてライトを当てても透明度が0なら色はつかないぞ。
0263名前は開発中のものです。02/08/08 02:41ID:???
え、マテリアルもRGBAのようなアルファ値があるんですか?
mat.Power=1.0fとやればいいってことですか?
0264名前は開発中のものです。02/08/08 04:47ID:???
D3DMATERIAL8 の定義をよく読め。

あとこれはどうでもいいことだけど、matと略すと行列と間違えるから、
俺はmtrlを使っている。ま、こりゃどっちでもええことだけど。
0265名前は開発中のものです。02/08/08 04:49ID:???
そうそう、matは使わないよね
俺はmateだけど(ダサッ

mtrlみたいな一文字飛ばし略語もなんかいやん
0266名前は開発中のものです。02/08/08 05:03ID:???
一文字飛ばしじゃなくて母音飛ばしだよ。よく使う手。mjskみたいなもん。
0267名前は開発中のものです。02/08/08 05:09ID:???
mjskってなに?(俺アホ?
0268名前は開発中のものです。02/08/08 06:05ID:???
>>267
Σ( ゚Д゚) mjsk!!
0269名前は開発中のものです。02/08/08 06:13ID:???
http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=%28%81@%81K%84D%81K%29mjsk%21%3F

マジッスカの略かぁ…。初めて知った
0270名前は開発中のものです。02/08/08 12:05ID:/HiLzdeI
投影テクスチャ使ってキャラの影を落としたいんですが
どうすればいいんですか?
0271名前は開発中のものです。02/08/08 13:15ID:???
ん?
0272名前は開発中のものです。02/08/08 13:53ID:???
漠然とした質問は返事しにくい。
要点をバシッと決めてくれ。
0273名前は開発中のものです。02/08/08 16:54ID:???
VCつかってやってるんですが、入力支援機能を使用可能にするにはどうすればいいのですか?
0274名前は開発中のものです。02/08/08 17:31ID:???
統合環境のエディタでソース開いて「::」とか
打ち込むと出てくるうざいアレのこと?
0275名前は開発中のものです。02/08/08 17:35ID:???
例:
ワークスペース - FileViewに、「DirectX」というフォルダを作る
DirectXのincludeファイルをプロジェクトに追加。
そこで追加したファイルは邪魔なので最初に作った「DirectX」フォルダに分けておく

とかすれば、入力支援機能でDirectXの構造体を使えたりも駿河
0276名前は開発中のものです。02/08/08 20:47ID:???
>>275
フォルダわけの意義がイマイチ謎
0277>>27502/08/08 21:11ID:???
もうちっと詳しく教えてくださらないでしょうか?
0278&gt02/08/08 21:52ID:???
>>276
ダブルクリックしてファイルを開きたいときに見つけづらいからでは?
0279名前は開発中のものです。02/08/08 22:15ID:???
>>277
もう十分詳しいと思うぞ。理解力が足りない
0280名前は開発中のものです。02/08/08 22:36ID:???
>>277
これ以上詳しくできないよ…
0281277=27802/08/08 22:36ID:???
どうも、理解できました。
0282名前は開発中のものです。02/08/09 03:23ID:???
DirectX8で2Dアクション(マリオのような)作る時って、
スプライトを使うべきか使わないべきか。
0283名前は開発中のものです。02/08/09 05:17ID:???
面白ければどっちでもいい、が遊ぶ側の本音だが、
いまどき横スク画面は壊滅的にダサくてダウンロードすらされない。
VB厨が垂れ流す駄ゲーと区別つかん。
0284名前は開発中のものです。02/08/09 06:12ID:???
HSP厨もな。
0285名前は開発中のものです。02/08/10 19:58ID:PD7Pi8C6
レンダリングステートの変更のコストを抑えるために、
少しの違いでもステートブロックを作ったら
ステートブロックの数が爆発しました。
ピクセル関連のステートだけですが、それでも64個。
もうひとつの選択肢として、レンダリングステートとテクスチャステージステートの
キャッシュつきラッパー関数を作るのもあります。

みなさんどうしてますか?
0286名前は開発中のものです。02/08/10 20:39ID:???
>>285
ステートブロック作っても切り替えを実行しちゃったら変更コストは
あんまり変わらんのでは?

ステートごとにグループ化する努力のほうが効きそうな気がする
0287名前は開発中のものです。02/08/10 23:57ID:9NCQqQXk
ステートの変更なんてたいして時間かかるものじゃ無いと思うけど。
どうせDirectX内部のどっかにある変数を切り替えてるだけだろ?
実際のレンダリングやら衝突判定やらにかかる時間に比べたら微々たるものだと思う。
0288名前は開発中のものです。02/08/11 00:18ID:???
ステート変更が入るとビデオカードが描画終わるまで待たないと
いけないからその分遅くなるよ。
CPUとGPUは非同期に並列に動いているから、単純に変数を書き換
える程度じゃ済まない。
0289名無しサソ02/08/11 00:44ID:???
 そういえば、レンダーステートの話で思い出したけど、PureDevice指定という
のは、レンダーステートのGetが全て出来ない代わりに、GPUの高いパフォーマンス
を得られると言う認識でいいのかな?

 プログラムを検証していて思うんだけど、SoftwareT&L環境下では当然
ながらパフォーマンスが頭打ち。上手く作ればもうちょっと速くはなるだろうけど、
HT&Lには到底及ばない。GeForce3世代になって、その差が目立ちはじめたけど、
皆さんはどの辺のパフォーマンスに主眼を置いてプログラムを作ってるのかな?
最近はHT&Lを前提にしたゲーム(Unrealエンジンとか)も増えているようだけど。

 というか、この辺は新しくポリゴン数スレみたいなものを作ったほうが良いですか?
自分みたいなヘタレだと、最新のビデオカードのパワーは手に余る・・・。
0290名前は開発中のものです。02/08/11 00:46ID:???
softT&Lなんて無視に決まってんだろ。
差がありすぎて両立は無理
0291名前は開発中のものです。02/08/11 01:14ID:???
SoftT&Lは、市販ソフトでも「遊べるか知らんけど動く」までやれば十分。
今年中だと、Soft頂点シェーダは微妙。
Doom3で底上げ期待。
0292名前は開発中のものです。02/08/11 02:27ID:???
近頃はHWT&Lを省略したチップが増えてきたから微妙だな。
CPUが速くなっているからそれで補うってのがメーカーの言い分だけど、
速いCPU使ってる奴がそういう安物ビデオカードを使うとは思えない。
結局、安物ビデオカードを買う奴はCPUも遅いんじゃないかな。
0293名前は開発中のものです。02/08/11 02:58ID:???
>>287
たとえば
ステートAに切り替え→描画1→ステートBに切り替え→描画2→ステートAに切り替え→描画3→
よりも、
ステートAに切り替え→描画1→描画3→→ステートBに切り替え→描画2→
のほうが高速だよ。
0294名前は開発中のものです。02/08/11 05:14ID:???
>>293
ステートAに切り替え→描画1→ステートBに切り替え→描画2→ステートAに切り替え→描画3→
はリア厨でもやらんだろ〜
確実に遅い例にはもってこいだがちょっとワラタよ
0295名前は開発中のものです。02/08/11 05:21ID:???
メッシュの透明に描画するには、ライトの宣言は必須なんですか?
0296名前は開発中のものです。02/08/11 05:21ID:???
俺はやるよ
つか、時間かけてる間に性能が上がるので最適化いらん(泣

Xファイル使ってるような奴は皆そうでしょ。
細かいコントロール不能だし

そーでなくてもピーク性能ってよくわからんよね
測定方法もなんか難しいつーかコツがあるみたいだし…
0297名前は開発中のものです。02/08/11 05:30ID:???
>>293
半透明オブジェクトや、エフェクトで加算合成じゃないビルボード
のZソートで結構ある
0298名前は開発中のものです。02/08/11 07:01ID:???
フィルレートが一番ネックになるので結構あるよ。
俺のマシンは出来るだけ前から書くのが一番だ。
Xファイルの連打ってステート変更もしちゃうのか???
そら使いにくい罠
0299名前は開発中のものです。02/08/11 07:31ID:q2d3/uDw
Xファイルの質問です。
XファイルのテンプレートにAnimationKeyというのがあって、
そのメンバにキーの種類を示すkeyTypeがあり、ヘルプを見るとこの値の意味するところは
0:回転、1:スケーリング、2:位置、3:行列キー
となっています。
ところが、とあるソフトでXファイルを吐き出すと、これが4というものが
出る場合があります。4は一体何を示しているのか、分かる人がいたら教えて下さい。
0300名前は開発中のものです。02/08/11 07:42ID:???
スキンメッシュのサンプル読む限り 4が行列キーだな
3は登場しない前提で対応するコードが書かれていてない
0301名前は開発中のものです。02/08/11 07:44ID:???
すまん。書いてあった。エラーです(藁
0302名前は開発中のものです。02/08/11 07:58ID:???
とあるソフトが何か気になる…
0303名前は開発中のものです。02/08/11 10:10ID:???
今まで何も考えずにD3DXVec3TransformCoordを使っていましたが、
何気にヘルプを眺めているとD3DXVec3Transformを発見
Coordのほうには「・・・その結果を w=1 に射影する」と書かれているのですが
これは無駄に/wが計算されていたのでしょうか???(普通のトランスフォームだから常にw=1)
まさに鬱だ市悩
0304名前は開発中のものです。02/08/11 10:35ID:???
と思ったらD3DXVec3TransformはVECTOR4用だった・・・
でも「・・・その結果を w=1 に射影する」が気になる
結局よく解らんので自前にしよう。そうしよう。
やっぱり鬱だ市悩
0305名前は開発中のものです。02/08/11 13:09ID:aO/cH.IU
スキンメッシュで質問です.
頂点法線も頂点と同じように回転の重ね合わせで求めるのですかね.
 n' = α0*n*R0 + (1-α1)*n*R1
毎フレーム毎ポリゴン外積,正規化していられませんよね
間接ごとに別れたモデルをワンスキンにしようと思ったのですが,LVERTEXにしたらせっかくのワンスキンが台無しかと思いまして.
skinnedmeshサンプルはちょっと読む気になれませんでした.お願いします.
030630502/08/11 13:28ID:???
あ,結局正規化は必要ですね.
ブレンド無しのワンスキンモデルにしておくのが無難ですかね.
ローポリにする技術も無いですし.
0307名前は開発中のものです。02/08/11 14:55ID:???
よくわからんが、一般的には法線に回転をかけるような事はしないYO
光源を回転させて法線に掛ける。この方が早くてウマー
0308名前は開発中のものです。02/08/11 15:25ID:???
えっと,ゲーム内で他にもいろいろオブジェクトがあるので光源を回転させるわけには行かないのですが.
それと自分で頂点計算していて,バーッテクスシェーダーとかではないのですが...
0309名前は開発中のものです。02/08/11 15:38ID:???
>>308
わかってないと思われ
0310名前は開発中のものです。02/08/11 16:44ID:???
スキニングするときは法線の合成してからライティングするのが普通だと思う
0311名前は開発中のものです。02/08/11 17:43ID:???
スキニングするときって法線合成するの?
書籍には座標の合成の仕組みばかりで書いてないよねー

正直しなくても誤魔化せるような気もするんだけど
バンプマップの法線なんかどーすんだー
0312名前は開発中のものです。02/08/11 21:20ID:???
>>311
8.1のskinnedmeshのシェーダー見れば?
必要ならばやるべし。
nVidiaのサンプルだとDotProduct3バンプの
基底ベクトルの合成もやってる
0313名前は開発中のものです。02/08/11 23:14ID:???
SmartJoyパッドを使って
感圧ボタンをDirectXでどうしても使いたい。
あれ使えれば、かなり幅が広がってくるのにね。
031430502/08/12 02:55ID:???
>>309
わかってないんです...

>>310
頂点と同じように(移動はなしで)ということですね.

>>311
まだ実際にコード書いていないのでいろいろ試してみます.
計算が倍以上膨れ上がりますからね.

>>312
頑張って読んでみます...
031530502/08/12 09:01ID:???
500△ポリのモデルで試しましたが、
複数のボーンから影響を受ける頂点が数十個だったので法線計算してもぜんぜん重く無かったです.
0316名前は開発中のものです。02/08/12 09:43ID:???
>>313
SmartJoypad自体が対応してないと思われ
0317名前は開発中のものです。02/08/12 09:52ID:???
>>315
ローポリ過ぎない? ゲームによって違うだろうけど。
これから出るゲームなら、デザイナーがどれだけ頑張っても
「ショボイ」で片付けられちまって報われない。
031830502/08/12 10:21ID:???
>>317
確かにショボイです.
デザイナ=プログラマ=私(素人)なので報われなくてもいいのです.
ある程度形になって,報われたくなったらモデルを外注したいですね.
0319名前は開発中のものです。02/08/12 13:16ID:???
DirectX8.1SDKをインストールしたんですが容量不足で
失敗したらしく、アプリのアンインストール項目にすら
出ていなかったので、フォルダを削除しました。

以後インストール出来ず、OSの再インストールすら青い
画面で起動不能に・・・2日かけて再起動まで成功。

DirectXを再インストールするにはどうすれば良いの
でしょうか(;´Д⊂)
0320名前は開発中のものです。02/08/12 13:31ID:???
>以後インストール出来ず、OSの再インストールすら青い
>画面で起動不能に・・・2日かけて再起動まで成功。
感想で悪いけど、OSをクリーンインストールしなおしたほうがよさげ…
0321名前は開発中のものです。02/08/12 13:38ID:ui+7Gm17
dxは普通に上書きインストール可能だと思うが
ブルースクリーン出るマシンがいかれてんじゃ?

だいたい、容量不足で失敗つーのも、珍しい。
最初にチェックあるのに(あてにならんが
032231902/08/12 17:48ID:???
preparing to install(つまり一番最初)で
1628:Failed to complete installation.って
出てまうですよ(;´Д⊂)鬱だ氏のう・・
0323まあ02/08/12 18:27ID:???
今後不安定なまま制作を続けてもしょうがないのだから
クリンストールしちゃいましょう
0324名前は開発中のものです。02/08/12 20:01ID:???
>319
オーバークロックとかしてないか?

そもそも、DirectXのSDK入れたぐらいで容量が足りなくなるぐらいHDDに
空きが無かったら、Windowsそのものがちゃんと動かない気がする。
032531902/08/12 22:50ID:???
HDDの容量は600Mほどあるはずなんですが・・・
8.0aでも駄目だったらクリーンインストール汁(;´Дm)
0326名前は開発中のものです。02/08/13 01:10ID:???
少ねぇ
安いんだからそのくらいケチるなyo
0327名前は開発中のものです。02/08/13 01:22ID:???
win95だったりして
0328名前は開発中のものです。02/08/13 01:50ID:???
>>326
再インストールが億劫でウチも似たような感じだ。
開封してないドライブが山積みになってるほ。
0329名前は開発中のものです。02/08/13 03:23ID:PImLDq+L
DirectX8.0 のスプライトを使って描画をしてるのですが、
画像がぼやけてしまいます、ぼやけないようにするには
どうしたらいいのでしょうか。
0330名前は開発中のものです。02/08/13 03:35ID:???
過去ログを読めばボケ解消
頭のボケは直らんがな
0331名前は開発中のものです。02/08/13 04:04ID:???
うむ。
過去ログにズバリそのものがでてる。
033232902/08/13 07:29ID:mgK0hkIz
くっきりできました。
テクスチャーの読み込み時に変なフィルターかけてました
033331902/08/13 08:43ID:???
8.0aでインストール出来ました(´・ω・`)thx
0334名前は開発中のものです。02/08/13 18:46ID:sLcDe9s2
みんなバージョンいくつで開発してるの?

8.xは情報があまりないから7をダウソ中(鬱
0335名前は開発中のものです。02/08/13 18:54ID:???
8以降でフォントが手軽に扱えなくなったのが辛いね。
ゲームの開発だったら画面に文字入れないと辛いだろうし、
当分の間は7がお手軽でお勧めだと思うよ…。
0336名前は開発中のものです。02/08/13 18:58ID:???
つーか、8が一番使いやすい
0337名前は開発中のものです。02/08/13 18:59ID:???
3Dを扱う場合は楽だよね。<8
特に初期化が。
0338名前は開発中のものです。02/08/13 19:22ID:???
Builder使いにはどうなんでしょうね
0339名前は開発中のものです。02/08/13 19:43ID:???
Builder使いは今でもDDraw3でシコってなさいってこった
0340名前は開発中のものです。02/08/13 22:46ID:???
シコシコシコシコ・・・ハァハァ(;´Д`)339さぁん・・・ゥッ
0341名前は開発中のものです。02/08/13 23:28ID:???
ポリゴンの表示処理で悩んでるのですが、
1) 好きな時に表示
2) 1回のBeginScene()〜EndScene()間で一括で表示
3) 2)を行った上さらにデバイスを極力いじらないようプリミティブをソートして一括で表示
最も簡単なのは1)なんですが、速度が気になります。
3)はテクスチャだのαブレンディングだのを考えるとあまり効果がなさそうです。
みなさんどうしてますか?
上記の方法以外の方法とかもあるんですか?
それとも「そんな大差ないよ」ですか?
お聞かせ願います。
0342名前は開発中のものです。02/08/13 23:32ID:???
すぐに描画するコマンドと
バッファに溜め込むコマンドと
バッファ内を描画するコマンドと
バッファをソートするコマンド

を作る。後は好きにする
最後の処理にバッファ内に未描画のものが残ってたら、自動的に(ソートして)描画
0343名前は開発中のものです。02/08/14 02:10ID:???
キタ−−−−(・∀・)−−−−ッ!!
Builderで付属のサンプルを動かすことに成功。
やっとヨチヨチできそうです。

ごめんね、庭球で。
0344名前は開発中のものです。02/08/14 10:58ID:???
がんがれ
0345名前は開発中のものです。02/08/14 11:10ID:???
builder捨ててアカデミックでも買えよ
0346名前は開発中のものです。02/08/15 19:45ID:???
メッシュ用データーを色々いじる(DX形式に再編してくれたりSTRIP作ってくれる)ライブラリどっかにない?
あんま省力化には興味ないかな?

STRIPはNVidiaの奴がいいのかな
0347名前は開発中のものです。02/08/16 16:03ID:cDFx8JRk
DirectSpriteて加算合成できますか?
0348名前は開発中のものです。02/08/16 17:00ID:???
DirectSpriteって何ですか?(藁
0349名前は開発中のものです。02/08/16 17:09ID:???
DX9で導入されるスプライト専用API
0350名前は開発中のものです。02/08/16 17:52ID:???
そんなもん ない
035137402/08/16 17:59ID:???
ごめん
DirectX8のスプライトのことです。
0352名前は開発中のものです。02/08/16 19:06ID:???
初歩的な質問です。
フルスクリーンにすると他のウィンドウを操作することはできないんですか?
0353名前は開発中のものです。02/08/16 19:08ID:???
できる
0354名前は開発中のものです。02/08/16 19:41ID:???
「初歩的な質問です。」ってよく見るとすげぇおかしい
0355名前は開発中のものです。02/08/16 20:48ID:???
どういう判断で初歩的と判断できるのか、小一時間問いつめたい
0356名前は開発中のものです。02/08/16 21:07ID:???
Spriteつかわんからわかんないなぁ
Textureなら加算合成できるけど…

…Spriteで加算合成ってどういうときに使うんだ?
0357名前は開発中のものです。02/08/16 22:46ID:???
>>356
君はSpriteもTextureも分かってないよ。もしくはへんな理解。
0358名前は開発中のものです。02/08/17 00:03ID:???
DrawSubsetは遅いんですか?
■ このスレッドは過去ログ倉庫に格納されています