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

鬱だ氏のう DirectX (Part 6)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものでス02/10/07 01:00ID:???
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)

コピペスマソ
020219902/10/24 00:35ID:???
ちなみに>>195ではないよ
>>200
うーむ、悩むなぁ
0203名前は開発中のものです。02/10/24 00:59ID:???
まぁ知っての通り、DirectXがバージョンアップする度に
移行作業が大変だとかぼやく香具師もたまに登場するわけだが
あーいう書き込みを読むときは眉に唾付けといたほうがいいな。
0204名前は開発中のものです。02/10/24 01:25ID:OYxRWu3f
Visual Studio.NETでDirectXのプログラムを作るときって、
何か設定はいらないんですか?

Ver6の時は、インクルードフォルダとか指定したりした気がするのですが。
0205名前は開発中のものです。02/10/24 01:38ID:???
厨質問をここでするかなぁ。
ツールの取り扱い説明書ぐらい嫁よ厨房。
分かりやすい例えいえば、VisualStudio6は標準パスの中に
PlatformSDKをインストール
0206名前は開発中のものです。02/10/24 01:40ID:???
>>205
大丈夫か?
0207名前は開発中のものです。02/10/24 01:40ID:???
>>204
そりゃあ必要だべさ。
つか基本だべ?
も一回プログラムの基礎から始めた方がよかんべ。
0208名前は開発中のものです。02/10/24 01:40ID:???
ワロタ
0209大丈夫じゃない20502/10/24 01:44ID:???
(続き)
すればインクルードフォルダの設定を書き加えることなしに
DirectX8.1SDKが使えるぞ。
0210名前は開発中のものです。02/10/24 02:03ID:???
>>205
コピーだから説明書はもってねぇって返事がくるぞ
021119802/10/24 02:27ID:???
これくらいなら書いても良さそうなので…

DX8→DX9はシェーダーの強化が主題みたいなものだから、それ以外の部分は
あまり変わってない感じ。
DX8からの移行時に固定機能で影響を受けるのはSetTextureStageStateの一部
がSetSamplerStateに変わったとか、SetIndicesのBaseVertexIndexが
DrawIndexedPrimitiveに移った程度。あとはCreateImageSurfaceが
CreateOffscreenPlainSurfaceに名前が変わったくらいか。

追加された新機能はいっぱいあるけど、DX8用に書いたソースから変更が
必要なのはそれくらい。
ちなみにD3DXはだいぶ強化されてる。アニメーション対応とか、アンチ
エイリアスライン描画とか。

一通り眺めてみると、DX9の作りかけの状態がDX8って感じ。
0212名前は開発中のものです。02/10/24 05:48ID:AlCDGmpl
>>211 C#への対応は完璧ですか?それとも現在のVBみたいなもん?
0213名前は開発中のものです。02/10/24 08:07ID:???
こらこら
0214名前は開発中のものです。02/10/24 10:46ID:???
DCの扱いも詳細きぼんぬ。
0215名前は開発中のものです。02/10/24 11:01ID:???
とっととリリース
あるいはpublic betaを出してほしい・・・
0216名前は開発中のものです。02/10/24 22:38ID:???
動的環境マッピングをやりたいんですが詰まってます。
環境マッピングにつかうテクスチャにレンダリングするわけなんですが、
レンダリングした物体が次フレーム時にも残ってしまい残像が出来てしまいます。
で、レンダリングする前にクリアしてみると、今度はテクスチャの画像が消えてしまいます。

どうすればよいのでしょうか…
0217名前は開発中のものです。02/10/24 22:48ID:???
>>216
キューブテクスチャを使った動的環境マップの
サンプルソースコードがSDKに入ってるから、まずそれ嫁。
0218名前は開発中のものです。02/10/24 23:33ID:???
>>211

>ちなみにD3DXはだいぶ強化されてる。アニメーション対応とか、アンチ
>エイリアスライン描画とか。

アニメーションというと、D3DRMみたいな、Xファイルのアニメーション?
スキンメッシュを自分で作成してアニメーションさせてみたいと思ってるのですが、
コンバーターとか、Xファイル関連のユーティリティとか付いてますかね??
0219名前は開発中のものです。02/10/25 00:02ID:4L21o589
dx9リリースどうなったのよ!時期に関して聞こえてコネー
0220名前は開発中のものです。02/10/25 02:34ID:???
来年
0221名前は開発中のものです。02/10/25 04:59ID:???
>>217
レスどうも。読んでみまっす。
0222名前は開発中のものです。02/10/25 09:46ID:0f8ClKRQ
もうDX9フルサポートのカードがでちまったよ。
「DirectX 9をフルサポートする新世代ビデオカードRADEON 9700 PRO」
http://review.ascii24.com/db/review/hard/videocard/2002/10/25/639151-000.html
0223名前は開発中のものです。02/10/25 09:59ID:???
でちまったか。

そして仕様変更の罠
0224名前は開発中のものです。02/10/25 10:06ID:???
>>219
>DX9 might not come out this year
日本語に訳すとね
「direct X9は今年中には公開されないっぽ」
ですな。
0225名前は開発中のものです。02/10/25 15:52ID:???
>>224
暗黙の仮定法のmightはmayよりもさらに確実性が低いから、
「ひょっとしたら今年中には出ないかも」くらいの意味だよ。
0226名前は開発中のものです。02/10/25 17:47ID:???
いつのまにかこんなスレが
0227名前は開発中のものです。02/10/25 19:42ID:0f8ClKRQ
だったら、頑張ってフルサポート1番乗りしたATIテクノロジーズって
かわいそうかも?
0228名前は開発中のものです。02/10/25 19:43ID:4L21o589
つか、NVidiaの妨害工作の予感
0229名前は開発中のものです。02/10/25 19:45ID:???
一番かわいそうなのはマトロックス
0230名前は開発中のものです。02/10/25 20:35ID:???
> つか、NVidiaの妨害工作の予感

NV30合わせになるようにMSと結託したのでは?
0231名前は開発中のものです。02/10/25 20:54ID:???
GeForce5キタ━━━━━━(゚∀゚)━━━━━━━!!!!!
0232名前は開発中のものです。02/10/25 21:32ID:Xo93wY0r
>>231
ソースどこー?

http://www.nvidia.com/
にはなかった
0233名前は開発中のものです。02/10/25 21:48ID:???
http://www.zdnet.co.jp/news/0210/25/ne00_nvidia.html
0234名前は開発中のものです。02/10/25 21:52ID:???
むしろこちらでは?

GeForce 5、COMDEXでデビュー
http://www.zdnet.co.jp/news/0210/25/nebt_07.html
0235名前は開発中のものです。02/10/26 01:52ID:???
vs.netでd3dx8.hインクルードするとたまにvsの起動が滅茶苦茶重くなるんだが
なんで?
0236名前は開発中のものです。02/10/26 06:02ID:???
zdnetの記事は提灯くさいなー。
実際、DirectX8がそうであったように、
DirectX9もここしばらく(来年の今頃まで)の間は
ベンチマニアや趣味シェーダプログラミング専用の玩具に留るだろ。
9000や4Tiでゲームは快適に動くしなー。
 
いや・・・Doom3クラスは9700要るのか・・・。
0237名前は開発中のものです。02/10/26 09:25ID:XAvHACAG
漏れはDX9の描画機能よりC#対応のほうが気になります。
0238名前は開発中のものです。02/10/26 09:36ID:NGd267ph
来年じゃな… ベーター登録必須なのかもね〜
とはいえ、対応ハードがないと意味ないか…
0239名前は開発中のものです。02/10/26 10:16ID:???
DX9開発ならRadeon9700だよね!
という状況をnVidiaは是が非でも回避せねばならないわけですわ
このままだとDX9の動作リファレンスは9700になっちゃうからね...
0240名前は開発中のものです。02/10/26 14:32ID:???
>>236
8すら未だメインで使われているとは言いがたい
0241名前は開発中のものです。02/10/26 14:50ID:???
4MX搭載機種を売り続けているメーカを怨むがよい。
0242名前は開発中のものです。02/10/26 21:24ID:vJSal2rR
D3DXCreateTextureFromFileExA関数で、引数に画像ファイルのパスを指定しますが、
このとき、画像ファイルに暗号をかけたいのです。
暗号というよりかは、ぱっと見ではわからなくなれば十分なのですが、
ファイルを変換すると当然この関数では読み込めません。

どうすればいいのですか?
0243名前は開発中のものです。02/10/26 21:30ID:???
>>242
質問する前に同じ系統の関数のヘルプには目を通せ
0244名前は開発中のものです。02/10/26 21:31ID:???
つまり何の為にD3DXCreateCubeTextureFromFileInMemoryがあるかという事だ
0245名前は開発中のものです。02/10/26 21:32ID:???
コピペする行間違えた(笑
D3DXCreateTextureFromFileInMemoryな
0246bloom02/10/26 21:43ID:6nCjm/4Q

http://homepage.mac.com/bloombloom/
0247名前は開発中のものです。02/10/27 00:15ID:???
>>225
「公開されないっぽ」
で、ひょっとしたら出ないかも〜をあらわしたつもりでしたが・・・
もしかして、漏れは英語の間違いじゃなくて日本語の間違いをしたのかな?
0248名前は開発中のものです。02/10/27 00:22ID:???
char aho[10000000]に一括してある数でXORかける関数ありませんか?
なかったらforでチマチマやってくしかないでしょうか。
024924802/10/27 00:23ID:???
ゲロ
スレまちがった
0250名前は開発中のものです。02/10/27 00:27ID:mrhYFwGU
スプライト描画の時に、テクスチャより大きいサイズを指定すると、
その部分が、枠の色で塗りつぶされてしまいます。

これを、画像の繰り返しに変更する方法ってありますか?
キーワードでもいいので教えてください。
0251名前は開発中のものです。02/10/27 00:27ID:???
>>248
君はそんなでかいレジスタが存在するとでも思っているのか?
0252名前は開発中のものです。02/10/27 00:46ID:???
>>241
オンボードメーカーと、クソモバイルチップメーカもうらみますのでよろしく。
0253名前は開発中のものです。02/10/27 00:47ID:???
40MBか・・・・
025424802/10/27 01:12ID:???
>>251
な、なんだって!?
0255名前は開発中のものです。02/10/27 01:20ID:???
printfだってCPUで専用命令もってるわけじゃない。
巨大xorも同じこと。

>>248さん。
そういう仮想CPUをエミュレートした関数をお願いすます。
0256名前は開発中のものです。02/10/27 01:27ID:???
248って242ぽ
違う?
0257DirectX9!!02/10/27 01:37ID:???
DirectX9!!
0258名前は開発中のものです。02/10/27 03:56ID:???
>>256
>248って242ぽ
同意
0259名前は開発中のものです。02/10/27 05:11ID:xlOk2lB2
>>257
何々? リリース情報?
0260名前は開発中のものです。02/10/27 05:36ID:???
257は電波
0261鬱だ02/10/27 12:01ID:???
DX5でLPDIRECTなんたらの長さが嫌になって挫折。
DX6でデバイスの初期化で面倒になって挫折。
昨日からDX8始めたがまた挫折しそう…
よく皆こんな面倒臭いのつかってるね
0262名前は開発中のものです。02/10/27 12:11ID:???
>>261
長さは一度作るとそうでもなくなる
あと、おっかけてると変化への対応はそんなに難しくない
0263名前は開発中のものです。02/10/27 13:11ID:???
ゲラゲラ。挫折しすぎ
0264名前は開発中のものです。02/10/27 13:26ID:???
>>261
ただ自分に根性がないのを環境のせいにして
挫折する「口実」を探しているだけじゃないかと自問してみるといいと思うよ。

オレモナー
0265名前は開発中のものです。02/10/27 13:32ID:???
どうせヘルプからコピするだけだしなぁ
あとは自分のクラスに置き換えるから長さも関係ないし
0266名前は開発中のものです。02/10/27 15:58ID:???
>>261
#define TD LPDIRECT3D
#define TD2 LPDIRECT3D2
#define TD3 LPDIRECT3D3
#define TD7 LPDIRECT3D7
#define TD8 LPDIRECT3D8

#define DV LPDIRECT3DDEVICE
#define DV2 LPDIRECT3DDEVICE2
#define DV3 LPDIRECT3DDEVICE3
#define DV7 LPDIRECT3DDEVICE7
#define DV8 LPDIRECT3DDEVICE8

#define D LPDIRECTDRAW
#define D2 LPDIRECTDRAW2
#define D3 LPDIRECTDRAW3
#define D4 LPDIRECTDRAW4
#define D7 LPDIRECTDRAW7

#define S LPDIRECTDRAWSURFACE
#define S2 LPDIRECTDRAWSURFACE2
#define S3 LPDIRECTDRAWSURFACE3
#define S4 LPDIRECTDRAWSURFACE4
#define S7 LPDIRECTDRAWSURFACE7
0267名前は開発中のものです。02/10/27 16:52ID:???
むしろ長いのが快感になります。
0268名前は開発中のものです。02/10/27 17:01ID:YXyH0IbH
1文字#defineはやめろやw
0269名前は開発中のものです。02/10/27 17:08ID:???
チンコも変数もプロトタイプも長いほうが(・∀・)イイ!
0270名前は開発中のものです。02/10/27 20:38ID:???
typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type allocator_type;
_Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size, bool __d, allocator_type __a)
: _Rope_RopeRep<_CharT,_Alloc>(_S_function, 0, true, __size, __a)

(*´Д`)ハァハァ
0271名前は開発中のものです。02/10/27 21:55ID:mrhYFwGU
スプライト描画の時に、テクスチャより大きいサイズを指定すると、
その部分が、枠の色で塗りつぶされてしまいます。

これを、画像の繰り返しに変更する方法ってありますか?
キーワードでもいいので教えてください。
0272名前は開発中のものです。02/10/27 22:29ID:???
>>271
SDKヘルプ 「テクスチャ テクスチャフィルタリング」
0273名前は開発中のものです。02/10/27 23:26ID:mrhYFwGU
どうもありがとう。
0274名前は開発中のものです。02/10/27 23:27ID:???
sage忘れました。ごめんなさい。
0275名前は開発中のものです。02/10/28 00:13ID:???
まあ、
「テクスチャ ラッピング」の方だけどね
0276名前は開発中のものです。02/10/28 01:05ID:liEtuJz8
ポリゴンに貼り付ける方法でやってみたら、それっぽいのが出来ました。
ただ、2Dで十分なので、スプライトでやりたいのですが…それはないのですか?
0277名前は開発中のものです。02/10/28 01:19ID:t4ureGZv
フルスクリーンでデバッグ時にうっかり不正な処理でハングさせると操作不能になりますよね。
このとき、VSを強制終了して復帰させるのですが、もっとスマートな方法はないんですか?
0278名前は開発中のものです。02/10/28 01:27ID:1Tubv01s
D3DXVECTOR3 pt[100][100]がありまして
pt[y][x] = D3DXVECTOR3(x,y,0)で初期化して作った四角形を
簡単に表示するにはどうすればいいのでしょうか?
D3DPT_TRIANGLESTRIPに当てはめる為に
DrawPrimitiveUPでコツコツ書くしか無いんですか?
0279名前は開発中のものです。02/10/28 01:27ID:???
>>277
リモートデバグしる!
ヘルプに「フルスクリーンアプリケーションのデバッグ技法」ってのが載ってる。
0280名前は開発中のものです。02/10/28 01:30ID:liEtuJz8
>>278
めっしゅめっしゅめっしゅ
0281名前は開発中のものです。02/10/28 01:40ID:1Tubv01s
>>280
頂点4つの四角形作ってテッセレートするんですか?
分かりやすくと思い(x,y,0)と書いたのですが
実は(x,y,rand()%50)ぽい四角形なんですが、
それでも出来ますか?
0282 02/10/28 05:41ID:???
>>278
「簡単に」ってのがどんな簡単さなのかよくわからんのだが、
pt[100][100]→カスタム頂点フォーマット の変換で
1個の点が複数のポリゴンで使用されてて無駄が多くてイヤ。ってなら
インデックスバッファ使えばイイんでないのか?
0283名前は開発中のものです。02/10/28 07:28ID:???
>>278 = 四角ポリゴンがないのが信じられん!世も末!と憤慨する人
0284名前は開発中のものです。02/10/28 12:05ID:???
>>266
typedefにしろ
0285工房初心者02/10/28 16:00ID:3IbZcUWO
VC++6.0でdiectx8の初期化のプログラムをビルドさせたら

t1.obj : error LNK2001: 外部シンボル "_Direct3DCreate8@4" は未解決です
Debug/cdq63_test1.exe : fatal error LNK1120: 外部参照 1 が未解決です。

というのがでた。これは何?
0286名前は開発中のものです。02/10/28 16:08ID:uvHswAPY
リンクが必要なライブラリを指定してない
0287名前は開発中のものです。02/10/28 16:12ID:???
プッ
0288工房初心者02/10/28 16:23ID:3AR3oMdu
スマソ
再インストしててわすれてますた
0289名前は開発中のものです。02/10/28 16:29ID:???
>>288
CUIでコンパイルしてると起きにくいミスだね。
ビルドの過程を頭の中で大雑把にイメージするようにしてごらんよ。
正しくなくても整合性が取れていればOK。
0290名前は開発中のものです。02/10/28 17:43ID:???
DirectX8以降でVSync待つ関数ってありません?
DirectDrawのWaitForVerticalBlankみたいなの
0291名前は開発中のものです。02/10/28 17:57ID:???
>>290
デバイス作成時に無視するように設定していなければPresentで勝手に待ちます
0292名前は開発中のものです。02/10/28 18:10ID:???
>>291
どうもです
やっぱりPresentの時にタイミング覚えるしかないかぁ
0293名前は開発中のものです。02/10/29 08:56ID:???
V-Sync信号待ちのメソッドではないんだが
IDirect3DDevice8::GetRasterStatus( ) で走査線の現在位置が
取得できるので、WaitForVerticalBlank( )の代用にはなるだろう。
 
もっとも、DirectX8の場合はウィンドウモードだろうとフルスクリーンモード
だろうと、DirectXにV-Sync待ちしてから画面更新するように
指定できるようになったので、あえてGetRasterStatus( )を使う
機会はほとんどないかもしれんけどね。
0294名前は開発中のものです。02/10/29 08:58ID:???
実際、漏れはこんな感じでやってるが、無茶苦茶ラクで問題もなし。 
IDirect3D8::CreateDevice( ) で指定するパラメータは
 
D3DPRESENT_PARAMETERS.Windowed  = TRUE  (ウィンドウ  モード)のとき
D3DPRESENT_PARAMETERS.SwapEffect = D3DSWAPEFFECT_DISCARD。
D3DPRESENT_PARAMETERSの他のメンバはデフォルト(ゼロ)のまま。
 
D3DPRESENT_PARAMETERS.Windowed  = FALSE (フルスクリーンモード)のとき
D3DPRESENT_PARAMETERS.SwapEffect = D3DSWAPEFFECT_COPY_VSYNC。
D3DPRESENT_PARAMETERSの他のメンバはデフォルト(ゼロ)のまま。
 
これで IDirect3DDevice8::Present( )時にV-Sync待ちをしてくれる。
(※一部の超マイナーな骨とう品ビデオカードを除けば)
0295 02/10/29 09:01ID:???
ageとくか。
0296 02/10/29 09:12ID:???
スマン。ちょっとド忘れしてて少し嘘を付いちまった。

思い出したことは、
ウィンドウモード時にIDirect3DDevice8::Present( )に
V-Sync待ちを任せると、環境によっては満足いかない結果に
なるかもしれん。てこと。
 
そゆときは、しょうがないから自分でタイミングを測って
Present( )するしかないだろうね。DirectX7以前の頃と同じ。
0297名前は開発中のものです。02/10/29 14:23ID:???
>>294
なんでD3DSWAPEFFECT_COPY_VSYNCなんてパフォーマンスの悪いの使うの?
D3DSWAPEFFECT_FLIPの方がパフォーマンスは良いし、VSYNC待ちもするよ。
あと、D3DSWAPEFFECT_COPY_VSYNCはVRAMも余計に消費する。
(D3DSWAPEFFECT_COPY_VSYNCはコピーしてからFlipする)
029829402/10/29 15:03ID:???
>>297
ん。スマン。
D3DPRESENT_PARAMETERS.Windowed の部分がアベコベ。
これで納得してくれたか。
0299名前は開発中のものです。02/10/29 15:25ID:???
>>297
それはフルスクリーンの時の話なの?
それともウィンドウモードのときの話なの?
0300名前は開発中のものです。02/10/29 15:38ID:???
>>297
>(D3DSWAPEFFECT_COPY_VSYNCはコピーしてからFlipする)
また適当なことをいう知ったかが発生してるよ
二回PresentしたあとにそれぞれDC経由でウインドウに描画してみればフリップが発生していないことが分かる
裏になっていれば片方は表示されないはずだが両方ともきちんと出る
0301名前は開発中のものです。02/10/29 16:41ID:eWrxqCn0
メッセージポンプって別スレッドにすることできないのだろうか……
■ このスレッドは過去ログ倉庫に格納されています