[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 04/29 12:35 / Filesize : 247 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part18 【C】



1 名前:デフォルトの名無しさん mailto:ライシンマハケン [2008/07/17(木) 13:50:04 ]
1 名前:デフォルトの名無しさん[sage] 投稿日:2008/04/09(水) 09:55:56
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

【C++】 DirectX初心者質問スレ Part17 【C】
pc11.2ch.net/test/read.cgi/tech/1207702556/

213 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 11:43:18 ]
場合によりけりだけど複数描画するならリストで1回ならストリップのほうがいいかな。
検証用の単純なものであればリストが有利だけど
かなり組みあがっているアプリの所々ストリップに直したらCPU/GPU負荷が平均で5%ほど下がった。

214 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 11:59:39 ]
自作のスキンメッシュデータをインデックスのストリップとリストに相互変換するプログラムを組んでみたが、
リストの方が確実にFPSが上昇した。

215 名前:デフォルトの名無しさん [2008/08/10(日) 12:01:25 ]
名前が緑になるんですが 青にはどうすればなれますか?

216 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 12:04:18 ]
光の波長を変える

217 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:52:13 ]
>>213,214
モデルの形状も影響するんじゃなかろうか。
ストリップをぶつ切りにする必要のある形状だと当然効果は薄いし、
なるべく法線の近いもの同士でストリップを繋ぐと、
陰面消去の時に効率が上がる場合がある。
メッシュでどこまでやってくれているか解らないけど、
ストリップを繋ぐアルゴリズムって奥が深いらしい。

218 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:03:06 ]
奥が深いというより本気で最適化しようとするとロジックが複雑になるというだけの話。
そんな状況でメリットが全く見えない。

219 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:06:13 ]
縮退なしで書けるなんて状況まずないからな。
いちいち反転するからCPUでコリジョンとる時とか面倒だし。

220 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:12:37 ]
そもそもモデリングデータをストリップで吐き出すデータ形式を見たことがない。
データを読み込んだ後にわざわざストリップに変換しているライブラリを見たことがない。

ちまたで見かけるのは平面を書くだけの単純なサンプルで、
インデックスを使わずにストリップのみで構成している、
まともに組むときには書かないようなダメソースぐらい。

221 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:00:24 ]
半透明とかストリップだときつそうだし、いろいろ細かい部分が面倒。
UVの割れとかも考えると、効率的にもそんなに変わらない気がする。
のっぺりテクスチャ無しの球でテストしてるときとは違うし。



222 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:28:46 ]
インデックスリストはGPUの頂点キャッシュアルゴリズム依存という問題はあるが、
淘汰されて4社しか残ってない今となってはどうでもいいな。

223 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 19:46:57 ]
>>222
GPUの頂点キャッシュアルゴリズム依存度よりも、
ユーザーの財布依存度の方が高いから。

224 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 03:36:47 ]
バックバッファについて教えてください。
1.アプリ毎に専用のバックバッファを持つんですか?
2.窓モードのバックバッファのウィンドウ外の領域は何も描画されていないんですか?窓サイズ変更時にバックバッファサイズも変更される?
3.窓モードで、ディスプレイに表示されている画像は全てのバックバッファを重ねたものと言うことですか?


225 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 04:45:59 ]
ちょっと描画するくらいなら既存のバックバッファ使った方が良い?
新しいバックバッファを追加するコストが知りたい

226 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 08:08:29 ]
効率なんて実装方法によって子となるんだから、自分で作って最適解を見つけろよ。
知りたいなら試せ。

227 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 11:10:25 ]
>>224
1.そうだ
2.そうだ
3.違う 1つだけだ

>>225
そうだ
バックバッファいじらないならデフォのまま使うんだ

228 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:07:36 ]
>>224
アプリ毎に持ちます

バックバッファの大きさは任意です。窓の大きさとは関連しません。
まぁデフォルトの窓の大きさ(たとえばゲームなら640x480とかね)と一致させるのが一般的。

窓の大きさを変えるたびにバックバッファの大きさを変えるのはあまりないんじゃないかね
窓が大きくなったら、バックバッファから窓への転送時に拡大する

ディスプレイも1つバックバッファを持っている。
アプリが自分の窓へ描画=ディスプレイのバックバッファへの描画

229 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:25:22 ]
ツールとかでドラッグで大きさ自在に変えるような場合は
デスクトップと同じサイズで作って窓の大きさ分を左上に描画して使ってるな。
サイズが変わるたびに作り直すのは流石に無茶。

230 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 01:37:02 ]
スタート画面にクリックしたらそれぞれのシーンへ飛ぶボタンを表示させたいのですが
何か良い方法は無いでしょうか?

231 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 01:49:16 ]
スタート画面をクリックする前はボタンを描画しないで、
スタート画面をクリックした後はボタンを描画すればよい



232 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 17:29:06 ]
スレの主旨から言ってDirectXで、という話だと思うけど
DXUTが一番楽なのでは。
後はイルリヒトとかコンポーネントっぽいのが入ってた気がする。
ダイアログを置いてオーナードローでDirectX描画っつー手もあるけど
多分、面倒臭いと思う。

233 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 05:45:47 ]
質問です

スペースキーを押したらゲーム本体が始まる様にしたいのですが
実行するとキーの状態を取得せずにいきなりゲーム本体が始まってしまいます
どうすれば最初にスタート画面を表示し続けれるのでしょうか?

スタート画面処理
{
  if ( GetAsyncKeyState(VK_SPACE) & 0x8000 ){
スタート画面を描画する
}
}

while(1){
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
〜略〜
}else{
スタート画面処理
ゲーム本体
Sleep(1);
}
}

234 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 08:14:20 ]
何と言う糞設計

DirectX関係ないし

235 名前:233 mailto:sage [2008/08/19(火) 10:23:26 ]
>>234
は?黙れ

236 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 10:27:09 ]
いやでもDirectX以前の話。
そこまでひどいとどこから説明していいのか途方にくれるわ。

237 名前:233 mailto:sage [2008/08/19(火) 10:33:45 ]
なんだよ つかえねーな

238 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 11:11:24 ]
 if ( GetAsyncKeyState(VK_SPACE) & 0x8000 ) なの?

239 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 19:26:21 ]
アドバイスのしようがないほどのソースは久しぶりに見た。
まずはメインループを書ける様になってからだ。

240 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 20:02:05 ]
「DirectXゲームグラフィックスプログラミング」の他にDirectXの基礎事項を勉強できるおすすめの本はありますか?

241 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:49:17 ]
if ( (GetAsyncKeyState(VK_SPACE) & 0x8000) == 0 ) でイインジャネ?



242 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 09:59:44 ]
入力待ちしないものでいくら判断したって押されてなけりゃそのまま通過するだけだろうが。

243 名前:デフォルトの名無しさん [2008/08/20(水) 15:43:01 ]
if (GetAsyncKeyState(VK_SPACE) & 0x8000)
else if ( (GetAsyncKeyState(VK_SPACE) & 0x8000) == 0 )

244 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 20:19:13 ]
ひどいソースわろた

245 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:57:09 ]
常にスペース押しとけばいつか動くさ

246 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:32:29 ]
DirectShowの質問です。

ムービーの動画をテクスチャに移して加工した上で表示させたいと思い、
ネット上のサンプルを読み漁ってとりあえず組んでみたのですが
以下の疑問点が発生しました。
どなたかわかる方が居ましたら、答えていただければありがたいです。

1. ムービーファイルの画像を「1枚ずつ」「任意のタイミングで」取得する方法はありますか?
 現在のコードでは、DirectDrawに再生させておいて
 描画時にテクスチャを取得して再生する、という構造になっています。
 おそらく別のスレッドで再生させているのだとは思いますが
 このシステムでは、負荷でメインスレッドのFPSが落ちた場合などに
 当然ながら同期のズレが発生してしまいます。
 (動画とメインループのフレームの比率が変化してしまうため)
 アプリ側から任意のタイミングでフレームを進めることはできますでしょうか?
 
2. 実際に再生させるルーチンまでは作れたのですが
  動画ファイルの読み込みに250msほど時間がかかってしまいます。
  特にIGraphBuilderのRenderFileメソッドが非常に重く、
  ここだけで200ms持って行かれてしまいます。
  これはムービーファイルを再生する上で回避できない時間なのでしょうか?
  ちなみに、ムービー形式はサンプルに沿ってwmvを使用しています。

DirectShowというと、マイナーでネット上のサンプルも少ないというイメージで
触っている人が少ないかもしれないかと思うのですが、わかる方が居ましたら
よろしくお願いいたします。

247 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:34:11 ]
ここまで書いてふと思ったのですが、
DirectShowなどに頼らずに自分で動画をデコードするような
コードを書いたほうが早いのでしょうか…
再生する形式はwmvなりmpegなり1形式に絞れるので。

248 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 10:01:06 ]
ム板かマ板にDirectShowと戦うスレがあったはず
DirectShowがDirectXから切り離されてひさしいので
そっちで聞いたほうがいいかと

249 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 12:36:26 ]
ありがとうございます。

この板にDirectShowと戦うスレ Part 4というスレがあったので
そちらで再度質問してみることにします。

250 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 17:50:09 ]
テクスチャフィルタをポイントに設定するにはどうすれば良いでしょうか?
現状はバイリニアのかかったような少しぼけた画像が
表示されてしまいます。
SetSamplerStateでポイントサンプリングに設定しても変わりませんでした

251 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 20:40:46 ]
交差している半透明のポリゴンを正しく表示するにはどうしたら良いでしょうか?



252 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:11:17 ]
交線でポリゴンを切り分ければ良し

253 名前:デフォルトの名無しさん [2008/08/24(日) 23:59:52 ]
質問いいですか?テクスチャのピクセルを取得しようとしています。

D3DXCreateTextureFromFileEx(
pd3dDevice, L"pattern.bmp", 64, 64, 1, D3DUSAGE_DYNAMIC, D3DFMT_X8R8G8B8,
D3DPOOL_SYSTEMMEM, D3DX_DEFAULT, D3DX_DEFAULT, 0, NULL, NULL, &texPattern);

// テクスチャ情報取得
D3DSURFACE_DESC desc;
texPattern->GetLevelDesc(0, &desc);

// テクスチャをロック
D3DLOCKED_RECT lockrect;
texPattern->LockRect(0, &lockrect, NULL, 0);
DWORD* ptr = (DWORD*)lockrect.pBits;

DWORD pixel_color=0x0;
short getx=10;//取得したいピクセル
short gety=10;//取得したいピクセル

254 名前:デフォルトの名無しさん [2008/08/25(月) 00:00:10 ]
if (0<=x && x<(short)desc.Width){
if (0<=y && y<(short)desc.Height){
pixel_color=ptr[getx+gety*(short)desc.Height];
}
}

texPattern->UnlockRect(0);

short color_r=(pixel_color>>16)&0xFF;
short color_g=(pixel_color>> 8)&0xFF;
short color_b=(pixel_color )&0xFF;

上のプログラムで正確な色が取得できません。
指定するピクセルによって違う値が返ってきているので、
きちんとテクスチャを参照してはいると思うのですが。

どうか教えてください。よろしくお願いします。

255 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 06:28:58 ]
pixel_color=ptr[getx+gety*(short)desc.Height];
これを直すといいかもしれない
うそいったらごめん

256 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 08:41:11 ]
>>253
サーフェスの横幅は、D3DLOCKED_RECT構造体のPitchを参照しないと駄目。
パディングでdesc.Widthと一致しない場合がある。

257 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 12:27:09 ]
つーか、desc.Height掛けてどうするよ。

258 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 15:56:26 ]
>>255
具体的にどう直せばいいのか教えてもらえると助かります。

>>256
Pitchのほうですか?
あれは余計なところまで含めたものらしいんで使えないはずです。
試してもらえばわかりますが、Pitchのところまで表示させるとゴミが出ますよ。

>>257
yは縦ですからHeightでしょう、高さという意味ですし。


259 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 16:05:38 ]
>>255,257見てもうちょっと考えろよ

260 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 16:07:59 ]
DirectX以前だな。

・ぼーるがたてに5つよこに4つならんでいます。
・ぼーるをひだりうえからいちだんずつよこにじゅんばんにばんごうをつけることにしました。
・いちばんひだりうえが0で、いちばんみぎうえが3です。
・みぎはしまできたのでいちだんさがってつぎのだんのひだりはしが4になります。
・いかどうようにばんごうをつけるといちばんみぎしたは19になります。

さて、ひだりから0からかぞえて2ばんめ、うえから0からかぞえて3ばんめのぼーるはなんばんでしょうか。
けいさんしきがわからなかったら、えにかいてみるといいですよ。

261 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 16:13:49 ]
Q. 3Dプログラミングに行列等、数学の知識は必要か
A. 掛け算程度は出来ないとお話になりません

>258
算数からやり直せ



262 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 16:29:40 ]
正方形ならうまくいったのになw

263 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 16:34:37 ]
>>258は質問者を騙った釣りだろう
sageてるし
内容があからさまに釣りだし

264 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 17:14:33 ]
質問です
布シミュに手を出して満足のいくものができたので、次は髪の毛にいこうかと思っています。
布シミュは「布シミュ」や「クロスシミュレーション」でうまく資料を探せたのですが、髪の毛はうまく資料をぐぐれません。

何か良いキーワードか、ページを教えていただけないでしょうか
よろしくお願いします

265 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:35:38 ]
3DのRPGを作ろうと思っているのでDirectXを勉強しようと思ったのですが
数学や物理の知識が必要と聞いたので
三角関数・ベクトル・行列を一通り勉強したのですが
他にやっておいたほうがいい分野はありますか?

ゲーム開発のための数理学物理学入門は一通り理解しました

266 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:39:36 ]
RPGってどんなのを作るつもりかわからんけど
3Dの知識以前にゲーム製作の総合的な知識が必要になると思うぞ
3Dの部分についてはとりあえず作り始めちゃって問題が出たらその都度調べればいいと思う


267 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:41:26 ]
>>266
アドバイスありがとうございます

268 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:03:00 ]
質問があります。
ATL/WTLにてDirectXを扱うにはどの様にしたらよいのでしょうか

クライアント領域を別のビュークラスで定義しサブクラス化しており、色々調べたところ
ビュークラスのHWNDを渡してしまうとCreateDeviceが通らないためウィンドウのHWNDで初期化し、
Render関数にて引数にCDC*を取り

LPDIRECT3DSURFACE9 pSuf = NULL;
m_pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&pSuf);

上記でバックバッファを取得し、

pSuf->GetDC(pdc->m_hDC);

とビューのHDCとバックバッファのHDCを関連づける方法にたどり着いたのですが、
Clearすら通りません。
問題のあるところを指摘していただけないでしょうか。

269 名前:デフォルトの名無しさん [2008/08/25(月) 23:07:25 ]
最強の同人ソフトウエアーを作るにはどのグラボを買えばOKでしょうか?

270 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:20:07 ]
>269
Intelのオンボード

271 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:21:15 ]
>268
>ビュークラスのHWNDを渡してしまうとCreateDeviceが通らないため
普通に通るぞ



272 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:41:55 ]
あれ、ほんとだ。
初期化関数に渡すハンドルをクライアントのに変えただけであっさり通りました
むしろ何故以前は通らなかったのか……

いずれにせよ前に進めました。ありがとうございます。

273 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:20:34 ]
DirectX9.0cなのに「診断ツール」がありません・・・
どうやったらdxdiag.exeをインストールできますか?

274 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 09:46:50 ]
dxdiag.exeはDirectXのドライバ入れたら(=ビデオカードがあれば)
Windowsに入ってると思うが。

275 名前:273 mailto:sage [2008/08/26(火) 11:23:20 ]
Cドライブでdxdiag.exeの検索かけても何処にも無い位は実行済み
更新しようとしても「最新だからインストール必要なし」と表示されます

276 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:36:26 ]
ファイル名を指定して実行、とか、Windows\system32の中、とか無いの?
今まで無かったためしがないのでないという状況がよくわからん。

277 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 12:00:56 ]
DirectXを学ぶときって関数を暗記する必要ありますか?

278 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 12:47:42 ]
>>277
暗記してもすぐ仕様が変わるから無駄


279 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 15:35:54 ]
暗記する必要はないが、どんな関数があるかくらいは一度全部
目を通した方がいい。

280 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:47:25 ]
パソコンのDirectXバージョンがDirectX10で
製品の動作機種がDirectX9対応グラフィックでは正しく使えるのでしょうか?
それともDirectXというのは同じバージョンでしか対応しないものなのですか?

281 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:58:16 ]
>>280
10以下のはすべて使えると思う




282 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 21:56:47 ]
>>281
回答ありがとうございます


283 名前:デフォルトの名無しさん [2008/08/26(火) 23:03:10 ]
とりあえず280GTXってのを買ってきました。これでコミケに出れます。

284 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 23:06:12 ]
今からDirectXの勉強を始めようと思うのですが
入門書としてDirectXゲームグラフィックスプログラミングVer2.1
を買いました。

DirectXGraphicsの初期化などは暗記して見ないで打てるようにしたほうがいいですか?

285 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 23:10:38 ]
初期化なんかゲーム1本につき1回しか書かないから、ちゃんと動くの1回書けたら忘れていいよ

286 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 23:10:39 ]
なんか暗記とか数学どこまで勉強とかって・・・
日曜プログラマならみんなコピペでいいよ
コピペで駄目になってから考えろ

287 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 01:11:50 ]
みんなでコピペした結果がこれだよ!

www.watch.impress.co.jp/game/docs/20070927/wv.htm

288 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 07:18:41 ]
>>283
待つんだゲフォの280は地雷だ。
らでの4850にしとけ。
大差ないスペックで大量の消費電力と3倍近い値段するんだぞ280は。

289 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 07:52:34 ]
>>287
March 2008でも直ってねーじゃん

290 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 07:58:17 ]
日曜プログラマでも脳みそは使わなきゃダメだ

291 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 09:43:51 ]
提供元のサンプルはコピペのためにあるようなもんだしなw
DVD出たときにパイオニアと東芝がしょっちゅう同じバグ出してたのもコピペだったんだろうなあ



292 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:30:57 ]
>>291
昔買ったNECのマウスのファームウェアがサンプルのコピペでワロタ
CY7C63101のサンプルコードに書いてあった仮のベンダーIDとかそのまんまになってた

293 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 13:49:52 ]
DC版VF3がSAMPLE GAMEなのと同じですね、違いますね。


294 名前:デフォルトの名無しさん [2008/08/28(木) 00:58:23 ]
Windosゲームを作っていて、
ゲーム起動時に32*32のフォント画像のテクスチャーを約8000個作りたいんですが、
その処理に15秒くらいかかってしまいます。

CreateTextureやバッファにフォント画像を書き込むこと自体は、
全然時間がかからないんですが、
↓の処理が凄く遅いです。

D3DLOCKED_RECT lockRect;
pTexture->LockRect(0, &lockRect, NULL, D3DLOCK_DISCARD);

高速化する方法ってないでしょうか。

295 名前:294 mailto:sage [2008/08/28(木) 01:12:25 ]
自己解決しました。
CreateTextureのプールを、
D3DPOOL_DEFAULT から D3DPOOL_MANAGED に変えたらちょっぱやになりました。

理由はよく分かりませんが、
D3DPOOL_DEFAULTだとLockRectでVRAMにアクセスするから遅い?

296 名前:294 [2008/08/28(木) 01:20:42 ]
LPDIRECT3DVERTEXBUFFER9を頻繁にLockして色を変えたりする場合も、
もしかして、D3DPOOL_MANAGEDの方が速いのでしょうか?

D3DPOOL_MANAGEDとD3DPOOL_DEFAULTの長所短所がよく分からないんですが、
詳しい人いたら教えてもらえませんか?

297 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 06:54:13 ]
POOL_DEFAULTは適切な使い方をすればちょっぱやになります。
あなたの使い方は論外です、今は素直にPOOL_MANAGEDを利用して
いつか分かるようになったらそのとき色々考えましょう。

っていうかDEFAULTのテクスチャをロックするなよ。

298 名前:294 [2008/08/28(木) 08:47:12 ]
今までリソースは全てPOOL_DEFAULTで作ってたんですが、
POOL_DEFAULTはどういう場合に使うのが適切なんでしょうか?
いつかじゃなくて今知りたいんですが、教えてもらえないでしょうか。

299 名前:294 mailto:sage [2008/08/28(木) 09:23:29 ]
かなり苦労してデバイスロスト時のリソース開放復帰処理を作ったので、
適切なところはPOOL_DEFAULTを使いたいんです。

300 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 10:53:32 ]
その前にテクスチャ8000個の方に突っ込むべきな気もする…

301 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 11:24:46 ]
淫乱負数からディスプレイアダプタを取得する方法が分からないのですが
誰か教えていただけませんか?

// ディスプレイアダプタを表すためのデバイスを作成
// 描画と頂点処理はハードウェアで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
// 失敗した場合
// 描画処理はハードウェアで、頂点処理はCUPで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SPFTWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
// 失敗した場合
// 描画と頂点処理をCUPで行う
if(FAILED(m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_REF,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&m_D3DPP, &m_pD3DDevice))) {
//取得失敗
return E_FAIL;

これだとコンパイルエラーが出ます。。。



302 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 11:45:18 ]
D3DPOOL_DEFAULT とかD3DPOOL_MANAGED考える前に
テクスチャ8000個ってのを改善しろよ

8000個なんて使うときあるか?

303 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 12:41:51 ]
>>302
日本語全部だとそのくらいじゃないの
知らないけど

304 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 12:44:54 ]
1文字ずつバラしてんのか

305 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 12:51:47 ]
1枚でつくって切りだして使えよ

306 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:22:12 ]
>>305
じゃあ聞きますけど1枚に全部入りますか?
書き込む前に考えるクセをつけるべきだと思います。

307 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:27:35 ]
jpeg3なら可能なんでない?
マトリョーカシからの圧縮も対応してるし
12000*8000のサイズも余裕で収まるっしょ?

308 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:27:56 ]
糞設計ブーム到来中

309 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:31:38 ]
「1枚じゃはいらないなぁ」

「でも複数にするとどの文字が
どのテクスチャに収納されてるのか考えないと・・・」

「そうだ!1文字テクスチャでつくればいいんじゃね」←いまここ


こういうことだろ?
どんだけ手抜きなんだよ

310 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:35:26 ]
書き込む前に考えるクセをつけるべきなのは>>306だなwwww

311 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:52:55 ]
---煽りあいはここまで---




312 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:22:10 ]
32*32を8000枚って、30MB超えたんだが、いったいどんな富豪グラボを想定してるんだろうw

313 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:55:04 ]
大丈夫
いまどきの富豪なグラボは1GBある






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef