トップページ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)
031330702/01/07 03:49ID:BpbIQZ5i
>>310 おっしゃるとうりです。

>>311 スクリーンの最小<スクリーンの最大 とはどういうことなんでしょうか?

>>312
座標変換前に調べるというのは、オブジェクトのワールド座標がカメラの
視野角内であるか判定するということですよね。
0314名前は開発中のものです。02/01/07 18:29ID:???
このスレ馬鹿にしてる割には、こんな問題すら解けないんだな(藁)
031531402/01/07 18:31ID:???
>>314 to ム板連中
0316名前は開発中のものです。02/01/07 18:35ID:???
・・・終了?
0317名前は開発中のものです。02/01/07 20:16ID:???
うん、終了・・・
0318名前は開発中のものです。02/01/07 20:44ID:ejFgkT1W
あけおめage
0319名前は開発中のものです。02/01/07 20:58ID:???
まともな答えが欲しいなら2chなんかで聞くのは間違ってると思うんだが。
2chで聞いても馬鹿にされるだけだぞ。
0320名前は開発中のものです。02/01/07 23:38ID:???
>>314-317は彼女いるか?
0321名前は開発中のものです。02/01/08 12:19ID:???
そんな、この世に存在しないものがいるかと聞かれても……
032232002/01/08 17:46ID:???
そうか・・・、すまなかった。
0323名前は開発中のものです。02/01/08 17:50ID:aXMf05yU
あのー、モデルの大きさってどのぐらいが適切なんですか?
プレイヤーの機体を基準としてなんですけど、数値の大小で悪影響とか出ることはあるんで
しょうか?それともどうでもいい?
0324名前は開発中のものです。02/01/08 18:09ID:???
floatで表現できる範囲ならどうでもいい。
単位も何でもいい。インチでもメートルでもキロメートルでもセンチメートルでも
ウサマビンラディンでも何でもいい。
0325名前は開発中のものです。02/01/08 18:13ID:???
>324
サンクスです。ウサマで逝きます。
0326名前は開発中のものです。02/01/08 19:38ID:???
値でかすぎると、Zクリップするときにギザギザにならない?
有効桁6桁だから、あんまでかすぎると良くないと思うよ。
0327名前は開発中のものです。02/01/08 20:17ID:???
>326
なってます。。ビデオカードの能力不足かと思ってました。
サンクスです。
0328名前は開発中のものです。02/01/08 22:08ID:???
>>324
どうせならオングストロームとかパーセクとか
0329名前は開発中のものです。02/01/09 00:04ID:???
・・・。
0330名前は開発中のものです。02/01/10 15:50ID:???
それは値がでかすぎるのがいけないんじゃなくて、far/nearの比の問題かと。
0331名前は開発中のものです。02/01/10 17:27ID:???
DX8のポイントスプライト(のサイズ調整)ってDrawPrimitibUPでは使えないんですか?
0332名前は開発中のものです。02/01/10 17:35ID:VwnKgT/a
age
0333祭り報告02/01/10 17:53ID:mnz5oev8
今ペット大嫌い板http://tmp.2ch.net/cat/index.htmlで( ● )_( ● )が大暴れしています。
みなさんも是非( ● )_( ● )を付けてスレ立ててください。
みんなであの最悪板を制圧して潰しましょう!
そしてあそこを消滅させましょう!!
今こそ団結の時じゃないでしょうか。特にペット好きの皆さんは。
033433102/01/11 00:54ID:8pSNS9M0
すいません。ポイントスプライトの表示されるサイズが変なんです。
何をやっても横に1.5倍ほど伸びてしまいます。サンプルにある
パーティクルと同じ画像をたくさん表示してるんですけど・・・
解決策を教えて下さい!
0335名前は開発中のものです。02/01/11 01:09ID:???
サンプルのほうも同じ現象が出てるということか?
もしサンプルが正常に動いてるならそのソースを見たほうが早いかもよ。
画面全体の縦横比がおかしいなら、プロジェクションマトリクスとか
ビューポートの設定を疑ってみてはどうか?
0336_02/01/11 01:30ID:???
>>334,335
俺もそう思う。
てか、ポイントスプライトって、サイズは1つしかないから、
正方形しか描画できん筈。
033733102/01/11 02:33ID:8pSNS9M0
>335、>336
すいません・・。どうやら画面の縦横比の問題みたいでした。
バックバッファの設定を1120:480にしたら直りました。
ありがとうございます。
0338名前は開発中のものです。02/01/11 05:32ID:???
誰か DIK_DOWN が宣言されている enum 名を教えて下さい。
033933802/01/11 05:33ID:???
いや、焦ってただけだった。
CONST_DIKEYFLAGS でした。スミマセン。
0340名前は開発中のものです。02/01/11 05:42ID:???
>>338>>339
DIK_DOWNだったら %mssdk%include\dinput.h の2000行目あたり。
ただし defineされているだけで、enumされてないんじゃねーのか?。
何に使うのかは知らんが、がんばれ。

それと、grepの使い方は覚えとけ。便利だから。ていうか基本。
034133102/01/11 21:28ID:8pSNS9M0
うぐ、何度もすいません。
直ったように見えていただけでした・・・
ポイントスプライトの表示領域が真っ白に表示されるように
してみたら、なんと横長の長方形でした。比率は2:1ぐらいだと思います。
で、その長方形はバックバッファに常に平行に描画されていて、他の
オブジェクト、ポリゴンに張ったテクスチャ、ビューポートの設定、
等は全て正常でした。(ビューポートのどこの設定を変えてもこの2:1は
変化しないです。)バックバッファのサイズ比を変更しない限り変化できないのですが、
これを変えると画面の縦ラインが妙な感じになったり、フルスクリーンに
できなくなったりします。似たような症状を知っているという方、教えて下さい。
0342名前は開発中のものです。02/01/11 21:46ID:???
>341
よく分からんが、
>1120:480
この比のせいじゃない?
4:3になるようにしてみれば?
034333102/01/11 21:51ID:???
>342
その比だとスプライト以外の画像がおかしくなるんです。
ウィンドウサイズ640:480で、バックバッファも
640:480にするとスプライトは2:1ですけど他は全て
正常です。フルスクリーンもできます。
034433102/01/11 21:54ID:???
あ、文章へんでした・・m(_ _)m。
4:3(ウインドウサイズと同じ比)でスプライトがおかしく
なるといことです。
0345名前は開発中のものです。02/01/11 22:49ID:???
>>344

で、肝心のサンプルのほうはどうなの。
そっちは問題なく動いてるんだろう?
034633102/01/11 22:52ID:???
>345
動いてます。ウィンドウのサイズを変えても大丈夫です。
0347名前は開発中のものです。02/01/11 23:32ID:???
たんにアスペクト比の計算を間違えてるだけじゃないの?
034833102/01/11 23:43ID:???
>347
アスペクト比は1.2です。変更するとスプライトの表示位置は
変わりますがサイズ(2:1)は変化無しでした・・・。
スプライトのサイズ変更処理をしても比率にはやはり変化無しです。
(D3DRS_POINTSCALEENABLE)
D3DRS_POINTSPRITEENABLE のみ、又、併用どちらもダメでした。
034933102/01/12 00:44ID:???
どなたかポイントスプライトの表示サイズ縦横比率を変更できる
方法教えて下さい・・・色々探しましたが見つかりませんでした。
お願いします。
0350名前は開発中のものです。02/01/12 01:16ID:???
まさか変換済み頂点使ってるとか
035133102/01/12 08:28ID:kqWL79i1
皆さんありがとうございます。
ようやく見つけました・・・。初期化の際、マルチサンプリングタイプを、
D3DMULTISAMPLE_2_SAMPLES にするとこの現象が起きるようです。
D3DMULTISAMPLE_NONE にしたらあっさり直りました。
でも理由が分かりません。
D3DMULTISAMPLE_2_SAMPLES はフルスクリーン・エッジアンチエイリアスを
使うために設定が必要だったんですが、もし分かる方いたら説明して頂きたいです。
共存はできないんでしょうか。
0352名前は開発中のものです。02/01/13 00:38ID:ssMqoitn
>>351
よくわからんが、ドライバがお亡くなりになってるんじゃ?
0353名前は開発中のものです。02/01/13 00:48ID:???
>>351
ビデオチップは何を使ってる?
もしHALドライバが怪しいと思ったら
リファレンスラスタライザの出力と比較するといい。

結果が異なるならビデオチップメーカーを呪うしかない。
0354名前は開発中のものです。02/01/13 01:06ID:lenemCyg
>>349
出来ないと思われ。
あれの根っこは、テクスチャの加工は拡縮比だけで転送、これに尽きる。
パラメータそのものが存在しないので、自前でシェーダ書け。
0355名前は開発中のものです。02/01/13 04:14ID:???
>>353
呪う前にバグ報告しろって
0356名前は開発中のものです。02/01/13 17:35ID:???
今DirectXの勉強中です。
DirectXの初期化の方法と使い方が分かったところで、さぁ何か作ってみるかと
思っているんですが、クラスを一切つくらずに一枚のファイルに書き続けていたら
すぐにコードが破綻しそうです。

そこで、クラス設計を考えはじめたのですが、みなさんはどのように設計しますか?
例えば、Winodwを作成表示するクラス、描画を担当するクラス、入力を担当するクラス
って感じですか?
0357 02/01/13 17:44ID:aHq0GIhg
クラス化するなら継承を考えないと面白くない
サンプルみたいに d3dapplicationクラスを作って
その派生で d3dgame とかクラスを作るといいかも〜

後、DXのバージョンが上がった時に最小限の変更でいいようにしたりして
Txture管理なんかも別クラスにしておく
0358 02/01/13 18:15ID:aHq0GIhg
なんか目からウロコな設計ないかねぇ〜

ViewPortも描画クラスの外にだして、簡単にマルチスクリーン、マルチアングルとか出来るようにしておきたい予感
0359親切な人02/01/13 18:46ID:???

1通のメールを読むだけで、毎月 1250 円
貰えます!!!

下記を観て下さい↓
http://www.guruguru.net/auction/item.php3?itemid=21703

■経験談■
私も、この広報文を観て、すぐ加入しました。
そして訪問するサイトに、このメモを 10 箇所位
残しました。
先月、家に USA から小切手が送金されました。

これを、地元の富士銀行で円に変えたみたら、
驚くことに、83500 円になりました。

それで、このサイトに入って、私の会員数を
確認してみたら、私の直接会員が 23 人で、
その会員が集めた会員が、65 人だったん
です。

まさか、こんなに早く会員が増えるとは思いも
しませんでした。(ちゃんと確認できるところが
安心します。)

■会員募集方法■
http://www.mintmail.com/?m=1940638
後の ID(番号)部分をミントメールより付与された
自分の ID に変換して広報すれば、本人が自動
的に抽選されます。
0360名前は開発中のものです。02/01/13 20:24ID:???
>>359
親切な人だかなんだか知らんが、激しく板違い。
どこの板が適切かって言われても困るけど。sage
0361名前は開発中のものです。02/01/13 20:40ID:IFrfU7io
BITMAP bmp;
RECT rc;
GetClientRect( g_hWndMain, &rc );
HDC hDCWindow = GetDC( g_hWndMain );
HDC hDCImage = CreateCompatibleDC( NULL );
SelectObject( hDCImage, g_hSplashBitmap );
GetObject( g_hSplashBitmap, sizeof(bmp), &bmp );
StretchBlt( hDCWindow, 0, 0, rc.right, rc.bottom,
hDCImage, 0, 0,
bmp.bmWidth, bmp.bmHeight, SRCCOPY );

画面サイズ可変でもBMPを表示するには
どのように改良すれば良いでしょうか?
0362名前は開発中のものです。02/01/13 21:00ID:???
>>360

その手の宣伝カキコは大抵は自動書き込みソフト使ってるから。
ま、放置で。
0363名前は開発中のものです。02/01/14 02:50ID:???
>>361
そのコードだと、どのへんがマズイんでしょうか?
0364名前は開発中のものです。02/01/14 02:55ID:???
>>363
SelectObjectしっぱなしとかそういうの?
0365名前は開発中のものです。02/01/14 05:55ID:???
>>363
ReleaseDC()も無いな
0366名前は開発中のものです。02/01/14 08:23ID:INEqxwAS
>>363-365 windowsモードでは正常動作ですが、フルスクリーンモ−ド
にするとBMP描画しない時があったので・・。
あと、ReleaseDC()はコピペしてませんが書いてあります。
コピペしてないコードに問題があるかもしれませんが。
0367名前は開発中のものです。02/01/14 11:03ID:???
古くスクリーンがパレット依存のモードなら、
パレットを設定してやらないとエライことになりますが、
そういうことじゃないよな
0368 02/01/14 18:06ID:wYdz4NZ6
ポリゴンの秘密について語るページ発見

http://www.masahicom.com/click/polinky.swf
0369名前は開発中のものです。02/01/14 19:27ID:???
↑ブラクラ
0370名前は開発中のものです。02/01/14 20:17ID:???
CEのDirectXへの対応ってどうなってるの?
0371名前は開発中のものです。02/01/14 20:58ID:???
グラフィックの左右反転ってどうやるんすか?
Bitでできますか?
0372名前は開発中のものです。02/01/14 21:23ID:???
>371
Bitは知らないけど、Bltで出来る。
037337102/01/14 23:10ID:???
>>372
Bltでした 逝ってきます
0374名前は開発中のものです。02/01/15 22:20ID:???
あれってどんなブラクラ?
0375名前は開発中のものです。02/01/15 23:07ID:AZ3fTKY/
>367さん >古くスクリーンがパレット依存のモードなら
SDK、DIRECTDRAWのswitchscreenにpaletteという単語で
検索すると約20引っかかるのですけどパレット設定って面倒な
処理なのでしょうか?
0376名前は開発中のものです。02/01/16 08:12ID:???
パレット依存の色数ならパレット使わないと駄目だけど、
そうでないならいらないよ。

面倒かどうかといわれるとそんなに面倒じゃない。
256色なら最初と最後のパレットがなぜか、黒と白に固定されてしまうとか、
細かい注意が必要(他に何かあったっけ?
0377名前は開発中のものです。02/01/18 22:22ID:SzoxuvrK
StretchBltは色々試したけどできなかったので
テクスチャに貼ったBMPで描画します。
>376さん手間かけました。
0378名前は開発中のものです。02/01/18 22:52ID:NTzxnp4w
Xファイルの読みこみをやってるのですが、
DirectXFileCreate

RegisterTemplates(D3DRMのテンプレートを登録)

CreateEnumObject(.xファイルから読みこみ)

GetNextDataObject

データオブジェクト->GetName

D3DXLoadMeshFromXof(レンダリングに必要なデータを取得)<<失敗する

(レンダリング用変数に振り分け)
、というふうにやってるのですが「D3DXLoadMeshFromXof」
のところで止まって(失敗して)しまいます。必要なデータは揃ってる
とおもうんですが、、、コンパイラは通ってます。何が足りないんでしょうか?
教えて下さい!
0379名前は開発中のものです。02/01/18 23:02ID:???
>>378
戻り値調べてどのエラーなのかわかれば自ずと解決すると思うが。
038037802/01/18 23:04ID:???
IDirectXFileData::GetType 、IDirectXFileData::GetData 、
IDirectXFileData::GetNextObject はよく分からないので使っていません。
最初のXFileDataobjectを取得(GetNextDataObject)してすぐにD3DXLoadMeshFromXof
を使っています。お願いします。
0381   02/01/18 23:47ID:???
>>378-380
ところで、お前のコンパイラは金出して買った物なのか?
038237802/01/19 00:02ID:???
>>381
VC++ SEアカデミックバージョンです。
お金を払って買いました。
0383名前は開発中のものです。02/01/19 00:03ID:o6fJC5Lk
>>378
>コンパイラは通ってます。何が足りないんでしょうか?
Ditrect XのSDKが足りない
0384名前は開発中のものです。02/01/19 00:04ID:o6fJC5Lk
>>382
ところでSEって何だ?
0385   02/01/19 00:12ID:???
>>384
スタンダードエディションだろ。きっと

>>382
とりあえず、379の言う通り各関数のリターンコードを調べろよ
VC++だったらステップ実行とか出来るだろ?
038637802/01/19 00:24ID:???
D3DXLoadMeshFromXofの戻り値はこの4つの内のどれかのはずなんですが、
なぜかどれにもひっかかりません。
・D3DERR_INVALIDCALL
・D3DXERR_INVALIDDATA
・E_OUTOFMEMORY
・D3D_OK

マニュアルに載ってないものがあるんでしょうか?
ほかの関数の戻り値はすべてD3D_OKです。
0387名前は開発中のものです。02/01/19 01:39ID:???
>386
もう、16進数の直値でいいよ。
038837802/01/19 02:34ID:???
>>387
16進数ってこれですか?_ltoaで出しました。

 80004005

色々やりましたがだめででした。分かりません。
038937802/01/19 02:48ID:???
エラー内容は

>E_FAIL
>Direct3D サブシステム内で原因不明のエラーが発生した。

でした。
0390名前は開発中のものです。02/01/19 03:25ID:???
>>389
じゃあその部分以外で挙動不審になっているんだろ。
今のままじゃ解決しないからソースどこかにアップすれ。
0391名前は開発中のものです。02/01/19 07:45ID:???
どうでもいーけど、DirectXのことならshi3z先生に聞くのが
一番手っ取り早いよ。
0392名前は開発中のものです。02/01/19 07:46ID:???
>391
ネタでも笑えない。
sage
039337802/01/19 19:24ID:???
皆さんありがとうございました。分かりました。
RMテンプレートでモデルを作るときは

TID_D3DRMFrame
TID_D3DRMMesh
(TID_D3DRMFrameTransformMatrix)

の3つのタイプデータを全て取得してないと
D3DXLoadMeshFromXofが正常に機能できないようです。
0394名前は開発中のものです。02/01/19 22:28ID:OzUufBc/
>391
>ネタでも笑えない。
>sage
shi3zネタってそもそもギャグなの?
0395名前は開発中のものです。02/01/19 22:40ID:FcNT7JOM
http://www.puchiwara.com/hacking/
     ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   /,( ´Д`)    /
   \丶_●‐●  < かなりおもひれへよほぉー!
      〉  , レ〉   \ まじで。まじで。
     (~~▼~|)      \ 
      > )ノ        \______________
     (__)__)
0396名前は開発中のものです。02/01/20 00:04ID:luoAEK1r
D3D8.1ってD3DXとかけっこう変わってるね。
やっぱ日本語ヘルプ欲しいよぅ。
英語は見ただけで頭痛がするんだよぅ。
039737802/01/20 00:26ID:???
IDirectXFileEnumObject::GetNextDataObjectで取得できる
IDirectXFileData にはフレームとアニメーションセットしか
なく、これからIDirectXFileData::GetNextObjectで取得した
IDirectXFileObject インターフェイスから取得
できる(QueryInterfaceのみ?)IDirectXFileDataに個々の表示用モデル
データ(トランスフォームやメッシュなど)が入っているという考え方
でいいんでしょうか?
QueryInterfaceのインターフェース参照識別子の一覧表とかあるんでしょうか?
あとアニメーションの位置関係も教えて下さい。
039837802/01/20 00:29ID:???
アニメーションの位置関係ー>包含関係 でした。
0399名前は開発中のものです。02/01/20 01:05ID:luoAEK1r
>>397
違います。
XFileのデータ構造はノードになってて、
>IDirectXFileEnumObject::GetNextDataObjectで取得できる
>IDirectXFileData にはフレームとアニメーションセットしか
>なく、
フレームとアニメーションセットしかないのは、ルートがフレームとアニメーションセットだっただけで
例えばルートにメッシュがあった場合は、IDirectXFileDataとしてメッシュも取得できます。
IDirectXFile云々を覚えるよりXFileのデータ構造を先に覚えた方が理解が早いですよ。

>>393
違います。
D3DXLoadMeshFromXofに渡すIDirectXFileDataは
メッシュのテンプレートデータを保持してなきゃ駄目なんです。
これが失敗するのは、IDirectXFileDataに保持されているデータが
フレームだったりフレームトランスフォームマトリクスだったりと
メッシュ以外のものだからです。
040037802/01/20 01:25ID:???
>>399
ありがとうございます。
あの枝分かれの連続がノードっていう構造なんですか?
文章が変でもうしわけないですが思ってたとおりみたいです。すいません。
D3DXLoadMeshFromXofの失敗も書かれたとおりです。
IDirectXFileEnumObject::GetNextDataObjectで取得できる
IDirectXFileDataをメッシュかどうか見ずにそのまま渡していたせいでした。
0401名前は開発中のものです。02/01/20 01:42ID:luoAEK1r
>>400
失礼!
ノードじゃなくてツリー構造の間違いでした。
0402名前は開発中のものです。02/01/20 18:06ID:???
Xファイルの使い方は分かったんだけど、これってVC++のリソース化
出来るの?なんかやろうとしても上手く出来ない。よって何時も恥ずかしく
外部ファイルにしてソフト動かしてます。ああ、鬱だ、、、
誰かやり方教えて
0403名前は開発中のものです。02/01/20 20:07ID:???
>>402
RM?IM?バージョンは?
IDirectXFile::CreateEnumObjectのヘルプとか読んだ?
0404名前は開発中のものです。02/01/21 14:49ID:qhrFmVt6
DirectXよりもXSIフォーマットのことが知りたい……

すれ違いですね。逝ってきます。
0405名前は開発中のものです。02/01/21 15:31ID:???
>>404
Softimage SDKを落としてくれば?
0406名前は開発中のものです。02/01/22 02:45ID:???
そうだね。
0407名前は開発中のものです。02/01/22 04:45ID:???
>D3D8.1ってD3DXとかけっこう変わってるね。
>やっぱ日本語ヘルプ欲しいよぅ。
>英語は見ただけで頭痛がするんだよぅ。
学生のころ、ちゃんと勉強しろとオトナが言ってなかった?
0408名前は開発中のものです。02/01/22 09:04ID:???
ちゃんと勉強しても英語は読めません。
0409_02/01/22 22:57ID:rbEYuiFP
>>407
社会人になって忘れただけです!!
学生の頃、偏差値169でした!!(エッヘン
0410名前は開発中のものです。02/01/22 23:11ID:8tfSihwM
>>409
いや、昔のこと自慢されてもね。
大切なのは「今何が出来るか」ですぜ。
勘違いのなさらぬよう。
0411名前は開発中のものです。02/01/22 23:30ID:???
>>409
麟麟も老いては駑馬に劣る。(プ
0412名前は開発中のものです。02/01/23 00:54ID:???
>>409
英語の偏差値とは一言も書いてないし、家庭科かなんかの偏差値?
■ このスレッドは過去ログ倉庫に格納されています