鬱だ氏のう DirectX (Part 6)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものでス
02/10/07 01:00ID:???初心者用相談室では扱わないような少し高度な話題も受け持つ。
■旧スレ(プログラム板)
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)
コピペスマソ
0514名前は開発中のものです。
02/11/10 14:45ID:???何でですかね?
0515511
02/11/10 15:00ID:???俺へのレス?違ってたらスルーして。
毎フレーム呼び出すのはPresent。俺が書いたのはReset。字面が似ているから
読み違えたかもしれないが。
Resetの後は、どうせパフォーマンスが落ちてるんで、使う使わないに関係なく、
全てのステータスを設定しなおしてる。理由は>>513と同じ。
0516がんばります
02/11/10 20:24ID:Ojm0qAse一応自分で一通り探したのですが、リンク切れとか
説明不足とかが多かったので、よろしくお願いします。
0517名前は開発中のものです。
02/11/10 20:37ID:p3Uh3pyT0518名前は開発中のものです。
02/11/10 20:49ID:???すいません。知らないです。
0520名前は開発中のものです。
02/11/10 22:31ID:???0522がんばります
02/11/10 23:45ID:???偽者ですね。
そんなこと言わないで下さいよ。
0523名前は開発中のものです。
02/11/11 00:46ID:FUv1TWBVウインドウモードで動かしてるんですが、描画領域が他のウインドウなどで
完全に隠れると、CPU使用率が100%になりカーソルまでロックされてしいます。
SDKのサンプルはそんな現象が起きないので自分の作ったプログラムに
問題があると思うのですが、サンプルと見比べても原因がまったく分かりません。
ちなみに描画ルーチンではClearとPresent(NULL...しかやっていません。
何か致命的なことを忘れているのでしょうか?
教えてください。(;´Д`)
0524名前は開発中のものです。
02/11/11 00:51ID:???0525名前は開発中のものです。
02/11/11 00:53ID:???0526名前は開発中のものです。
02/11/11 01:03ID:8CEKfzu00527523
02/11/11 01:18ID:???ソースの全体を乗せるわけにもいかず…
とりあえず大まかな説明を。
PeekMessageして空の間レンダリングするようにしています。
初期化もWM_CREATEでは無くCreateWindowでハンドルが帰ってきた段階で
やっていています。
ウインドウプロージャはWM_SIZEとWM_DESTROYくらいしか引っ掛けていません。
directxを呼んでいるのは一つのスレッドだけです。
レンダリングの部分は
d3d_dev->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_COLORVALUE(.5, 0, 0, 1), .0f, 0.0f);
d3d_dev->Present(NULL, NULL, NULL, NULL);
削って実験してこれだけです。
この2行を取ると重くなりません。
こんなところなんですが…
0528名前は開発中のものです。
02/11/11 01:23ID:???0529523
02/11/11 01:33ID:???CreateDeviceでD3DCREATE_SOFTWARE_VERTEXPROCESSINGでは
大丈夫なようです。
D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DCREATE_MIXED_VERTEXPROCESSING
だと重くなります。(描画領域が1ピクセルでも表示されていれば大丈夫)
SDKのサンプルでd3dapp.cppのCreateDeviceの部分にに
D3DCREATE_HARDWARE_VERTEXPROCESSING
D3DCREATE_MIXED_VERTEXPROCESSING
共に指定してやってみましたが同じような現象は起こりません。
ただし、d3dapp.cppを使っていないTutorialsのサンプルでは
現象が再現します。
自分のプログラムはd3dapp.cppは使っておらず、Tutorials見たいな簡単な
作りになっております。
しかし、d3dapp.cppがどうやってこれを回避してるのかさっぱりです。
D3DPRESENT_PARAMETERSまで一緒にして試しては見たんですが…
0530523
02/11/11 01:40ID:???前はこんな感じで引っ掛けていました。
case WM_PAINT:
win->OnPaint();
ValidateRect(hWnd, NULL);
return 0;
でもどうもぁゃιぃので今は取っています。
BeginPaintなんかも入れて試したんですが変わりませんでした。
一人で長々と書いてすいません。
0531名前は開発中のものです。
02/11/11 01:47ID:???プロージャの最後で
return defwinproc(hoge,hoge〜 よ?
0532523
02/11/11 01:57ID:???DefWindowProcしてますよ〜
ウインドウ管理の部分は他のプログラムの奴の使い回しですから、
そこで重くなっているとは考えにくいです。
0533名前は開発中のものです。
02/11/11 02:01ID:???defWinproc通さないでreturn 0しちゃってるじゃん
0534名前は開発中のものです。
02/11/11 02:02ID:???つか、他の部分はちゃんとdefwin〜通してからreturn してるか?
0535523
02/11/11 02:09ID:???元々は全てbreakでdefwin行くようにはしてたんですが。
0536名前は開発中のものです。
02/11/11 02:29ID:???原因が良く分からない部分でエラーとなってしまいます。
LPDIRECTINPUT8 pDInput;
LPDIRECTINPUTDEVICE8 pKeyboard;
HRESULT hr;
hr = DirectInput8Create(hinstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&pDInput, NULL);
if(FAILED(hr)) return false;
hr = pDInput->CreateDevice(GUID_SysKeyboard, &pKeyboard, NULL);
if(FAILED(hr)) return false;
hr = pKeyboard->SetDataFormat(&c_dfDIKeyboard);
if(FAILED(hr)) return false; // ここでreturn false
このようにしてDirectInputを設定したのですが必ず最後の
SetDataFormat(&c_dfDIKeyboard)で失敗してしまいます。
普通に使用できているキーボードを使用しているのですが、
この場合どのような原因が考えられるのでしょうか?
どうかよろしくお願いします。
0537名前は開発中のものです。
02/11/11 02:46ID:???エラーの戻り値を調べてみた?
0538名前は開発中のものです。
02/11/11 03:18ID:???サンプルはちゃんと動いてるの
0539名前は開発中のものです。
02/11/11 07:39ID:???わからないが、
WaitMessageしてないとか
Sleep(0)入れてみるとかじゃない?
0540名前は開発中のものです。
02/11/11 13:25ID:9PgLbw0eIDirect3DDevice8::Clearを実行したところアプリケーションが
終了してしまうので色々試していたのですが、
例外を捕捉してみたところ、捕捉できてしまいました。
try {
pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0, 0);
} catch(...) {
// ここへくる
}
DirectXのドキュメントを見ても例外が起こるということは書いておらず
どこかで変な処理でもしてしまったのかと思うのですが
どのような場合に例外が起こるのでしょうか?
0541名前は開発中のものです。
02/11/11 13:40ID:???pD3DDeviceがNULLとか…
0542名前は開発中のものです。
02/11/11 15:59ID:???サンプルは動くのかサンプルは.
0543名前は開発中のものです。
02/11/11 16:37ID:???全然読まねー奴っているよな。
0544名前は開発中のものです。
02/11/11 18:10ID:???0545名前は開発中のものです。
02/11/11 18:33ID:Ooxx02A30546名前は開発中のものです。
02/11/11 19:55ID:???まずアナタがどうやっているか(どうやろうとしているか)を書くのが筋でしょう
0547名前は開発中のものです。
02/11/11 20:08ID:???0548547
02/11/11 20:11ID:???0549名前は開発中のものです。
02/11/11 21:27ID:???境界球や境界箱だが。
0550まっつん
02/11/12 03:24ID:???まっつんが考えたのは黄色の丸を描いたビットマップを上にいくにしたがってARGB指定で徐々に赤くしていきます。
また上にいけばいくほど中心からはなれればはなれるほどアルファ値を低くという法則にしたがって1万ほどの粒子を描画するというものですが、それらしくはなりますがいまいちです。
お知恵を拝借したいです。
0551まっつん
02/11/12 03:30ID:3TBeukJM0552名前は開発中のものです。
02/11/12 03:33ID:???( ´,_ゝ`)プッ
0553名前は開発中のものです。
02/11/12 08:11ID:???結婚を前提にメルトモしましょう
0554名前は開発中のものです。
02/11/12 08:46ID:???萌え
0555名前は開発中のものです。
02/11/12 10:03ID:???>>552がリーダー
0556名前は開発中のものです。
02/11/12 10:29ID:???手書きでうまくいくものなのか?
これでも使ってろ。
ttp://www.forest.impress.co.jp/article/2002/01/17/abom.html
0557名前は開発中のものです。
02/11/12 10:58ID:???バーテックス、ピクセルシェーダーが使える環境?
後、ただ色変えて重ねるだけじゃマンガの炎っぽくなるんじゃない?
しかし、昔試したアッドブレンドだと上手く炎の赤が出来なかった記憶が…
それに、その炎以外に、アルファ描画は無いの?
あるんだったら、少し細工しないと。
アルファ描画同士の整合性を取らないと駄目だと思うよ。
0558名前は開発中のものです。
02/11/12 13:32ID:???しかしバックバッファの設定が512*512とか正方形しか無いのが
なんでなのかいまいちよくわからん。
フルシーンアンチのつもりなんだろうか。
0559名前は開発中のものです。
02/11/12 13:35ID:???0560名前は開発中のものです。
02/11/12 13:45ID:???SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
透明On
SetRenderState(D3DRS_SRCBLEND,D3DBLEND_ONE);
黒抜き
SetRenderState(D3DRS_DESTBLEND,D3DBLEND_ONE);
加算
この後に描画するものはすべて加算になる。
っていうのを見たのですが、例えば画面左下にステータスを
表示させようと思い、黒の背景に青い文字でLIFEと書いてある
ビットマップを作成しました。それで上の方法でアルファブレンディング
をしたのですが、上書きされる裏地の画面の色が黒の場合は
綺麗に青い文字でLIFEと表示されるのですが、そうでない場合だと
文字の色が合成されて青ではなくなってしまいます。かといって
ブレンディング方法をONEじゃなくてZEROなどにすると
こんどはテクスチャの黒い部分も表示されてしまいます。
透過GIFのように、黒は表示されずに、それでいて青は上から
しっかりと上書きされるようにするにはどうすればいいのでしょうか?
0561名前は開発中のものです。
02/11/12 14:00ID:???文字列のビットマップをα付きにするしかないと思うよ。
背景部分を完全透過にすれば、普通のαブレンドで行ける。
0562名前は開発中のものです。
02/11/12 14:18ID:???選択肢にないだけでレジストリを直接いじれば正方形以外にも変更可能
>>559
いい加減なことを言うな
0563名前は開発中のものです。
02/11/12 14:20ID:???アルファ値を直接変更しないで無駄な苦労をする理由は?
0564名前は開発中のものです。
02/11/12 15:01ID:???ビットマップをα付きにするというのは、画像を作成するときに
特別なツールが必要ということなのでしょうか。
それとも、テクスチャを読み込む関数
D3DXCreateTextureFromFileExの
ColorKeyで完全に透明にするいろというところに
(0,0,0)と入れればいいということなのでしょうか。
ちなみに普通のαブレンドというのは
lpD3DDEV->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
lpD3DDEV->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
のことですよね?
0565名前は開発中のものです。
02/11/12 15:38ID:???>特別なツールが必要ということなのでしょうか。
何故そういう発想になるのか理解しがたいが
最初からアルファ値があるデータを使う必要はない
読み込んだ後にテクスチャをロックして好きな値を設定すればいいだけ
0566名前は開発中のものです。
02/11/12 15:55ID:???0567名前は開発中のものです。
02/11/12 16:32ID:8nxZuYA/SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
0568名前は開発中のものです。
02/11/12 16:57ID:???>読み込んだ後にテクスチャをロックして好きな値を設定すればいいだけ
これのやり方がわからないのです。
黒地に青の文字のテクスチャを作って
D3DXCreateTextureFromFileEx関数の完全透過色の値を
(0,0,255)と設定すると、青が抜かれて描画されます。
じゃあ、(0,0,0)と設定すればできるかなと思ったのですが
それもできず。
じゃあ、赤地に青文字で(255,0,0)とやれば青文字だけできるか
と思えば、それもできず。
うーん、参ってしまいました。
0569名前は開発中のものです。
02/11/12 17:31ID:???>これのやり方がわからないのです。
何故分からないのかが分かりません
ロックして自分で色を判断して該当するアルファ値を書き込むだけですが、
いったいどこが分からないのでしょうか?
0570名前は開発中のものです。
02/11/12 17:37ID:???・ロックして
・自分で色を判断して
・該当するアルファ値を書き込む
…のどれよ?
0571名前は開発中のものです。
02/11/12 18:27ID:???正直言うと、すべてです。
ロックするってのは頂点バッファに頂点情報の配列をmemcpyするときに
つかうあのロックのことでしょうか?
そもそもテクスチャのなかがどのようになっているのかもよく理解できて
いないのでありまして。
テクスチャの中にはそれぞれのピクセルごとにRGBAそれぞれ255ずつの
情報が格納されてて、そのなかのピクセルで黒(0,0,0)の
色情報のピクセルのαの値すべてを0に書き直せってことを
おっしゃってるのですか?
だとしたらそもそもの記述方法がわかりません。
便利な関数に頼りすぎてしまっているのかもしれません。
0572名前は開発中のものです。
02/11/12 19:02ID:???ヘルプ嫁
0573名前は開発中のものです。
02/11/12 19:59ID:???全部わからんならヘルプ読むことを勧める。
どれか一つなら解説にもたいした手間はかからんけど、
全部まとめて1から解説する気にならん。
0574名前は開発中のものです。
02/11/12 21:10ID:???少し前から全然繋がらない。
0575名前は開発中のものです。
02/11/12 21:17ID:???普通に見れますが?
0576名前は開発中のものです。
02/11/12 22:53ID:???うちも
[an error occurred while processing this directive]
とか表示されて見れないよ。
infoseek と HOOPS! の統合作業のせいかと思ってたけど
作業終わっても見れん。
0577名前は開発中のものです。
02/11/12 23:03ID:???Googleで検索すりゃ一発なのに…
ttp://bbx.hp.infoseek.co.jp/index_home.shtml
0578名前は開発中のものです。
02/11/12 23:28ID:???当ページのURLは「http://isweb8.infoseek.co.jp/computer/bbx/」です。
とあるんだが…
http://isweb8.infoseek.co.jp/computer/bbx/
、、、
0579名前は開発中のものです。
02/11/13 00:12ID:???だから?
0580名前は開発中のものです。
02/11/13 00:20ID:???結局SDKに入っているツールを使ってDDS形式にすることで
解決できました。というか、解決できてませんね。
どうやら自分は、メモリの中を自分で書き換えることがまだちゃんと
できないようです。
Xファイルを読み込んでそれをカスタマイズした頂点情報のひな型に
入れていくという作業もいまなにも見ないでやれといわれたら
絶対にできないと思います。
実際、ゲームプログラマーとして食べて行くにはどれくらいのスキルが必要
なのでしょうか。かなり不安になってきました。PS2とかの開発は
もっとむずかしそうですし・・・・・
0581名前は開発中のものです。
02/11/13 00:22ID:???ローカルルールより
>以下の話題は別の専用板で
>・業界の話題 → ハード・業界板
0582名前は開発中のものです。
02/11/13 00:33ID:???おまえマジでしねよ
0583名前は開発中のものです。
02/11/13 00:40ID:???結局移転なの?
それともトップだけ死んでるの?
アドレスが変わったの?
0584名前は開発中のものです。
02/11/13 01:00ID:???トップだけ死んでるんじゃない?
昨日の投稿記事もあるし。
0585名前は開発中のものです。
02/11/13 01:13ID:???ふーん、移転したわけじゃあないのか…
それにしても長いこと死んでるなぁ、、
っていうかBBX掲示板って以前はアドレス直指定じゃ入れなかったような
0586名前は開発中のものです。
02/11/13 14:22ID:???つーか、トップ逝って見れなかったのでソースちょっといじって
デスクトップに置いたら以前と変わらず見れますが
0587名前は開発中のものです。
02/11/13 16:40ID:???0588DirectX9.1!!
02/11/13 17:25ID:???0589名前は開発中のものです。
02/11/13 17:33ID:???0590DirectSEXは開発中のものです。
02/11/13 17:53ID:???0591名前は開発中のものです。
02/11/13 18:40ID:???0592名前は開発中のものです。
02/11/13 20:32ID:???対義語はPhoneSEXです。
0593名前は開発中のものです。
02/11/14 02:08ID:GiEDJ/060594名前は開発中のものです。
02/11/14 02:22ID:jiqdRyiV0595名前は開発中のものです。
02/11/14 02:22ID:???0596名前は開発中のものです。
02/11/14 07:29ID:???0598名前は開発中のものです。
02/11/14 13:37ID:???0599名前は開発中のものです。
02/11/14 14:19ID:???スタティックライブラリになっている部分が分かっていない馬鹿は黙ってろ
0600名前は開発中のものです。
02/11/14 14:23ID:???おまえのあいぴーぬいてやるぜえええ
0601名前は開発中のものです。
02/11/14 15:40ID:???ijyo Delphi tyubo deshita
0602名前は開発中のものです。
02/11/14 16:05ID:???厨房ならしかたないや
0603名前は開発中のものです。
02/11/14 16:14ID:h7xbBaO28から大幅仕様変更はしないだろうな。
本も安くねえんだぞ
0604名前は開発中のものです。
02/11/14 16:53ID:???8が解ってればあとはヘルプのみで対応できるよ。
0605名前は開発中のものです。
02/11/14 17:33ID:???0606名前は開発中のものです。
02/11/14 17:52ID:???delphi niha .lib ga nainodesu
0607名前は開発中のものです。
02/11/14 19:33ID:???DirectDrawとDirect3Dが統合されてDirectGraphics…とか、そういう大幅な変更はないはず。
0608名前は開発中のものです。
02/11/14 22:41ID:???ヘルプで十分だろ、、、
0609名前は開発中のものです。
02/11/14 23:24ID:???0610名前は開発中のものです。
02/11/14 23:31ID:???0611名前は開発中のものです。
02/11/15 00:58ID:X0luojF8のだがあまり良い意見が聞けない(OSが原因かと思いWin板へ立てたが期待ハズレ)。
ゲ製板住民はリアルタイム処理に強いことを期待して意見をいただきたい。既に
スレ立ててしまっているので該スレにリンクを張ってもよいか?
もし迷惑だったらスマソ。
0612名前は開発中のものです。
02/11/15 01:15ID:???その程度でスレ立てるな、と…。
ソフトウェア板やCD/DVD板とか、色々あるだろうに。
プログラム的な問題ならソフトウェア板。
どちらにしろこの板じゃ板違い。
0613名前は開発中のものです。
02/11/15 01:18ID:???期待ハズレ、っていうより自分の希望通りのレスがもらえなかっただけだろ(藁
何が原因かわからないのにWin板でスレ立てか。おめでてーな。
初心者板へ(・∀・)カエレ!
■ このスレッドは過去ログ倉庫に格納されています