- 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/
- 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ある
- 314 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:57:52 ]
- 淫乱負数からディスプレイアダプタを取得する方法が分からないのですが
誰か教えていただけませんか? // ディスプレイアダプタを表すためのデバイスを作成 // 描画と頂点処理はハードウェアで行う 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; これだとコンパイルエラーが出ます。。。
- 315 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:42:55 ]
- とりあえずエラーの内容も書こうぜ
- 316 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:55:45 ]
- Renderer.cpp(266行目) 淫乱負数からのポインタが取得できません
ちなみに使っているコンパイラは現役専門学生の友達が作ってくれたものです。
- 317 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:53:57 ]
- DEFAULTはそれこそ毎フレーム書き換えるようなデータに使うのが一般的。
その場合は当然DYNAMICフラグとセットにしてな。 それ以外のただの画像テクスチャなんてものはMANAGEDで問題ない。 速度的にDEFAULTが速いとか勘違いしてるかもしれないが 作成時に1回だけ書き換える程度の静的なデータには無意味だ。 一般的といっていいかは分からないけど、 MMOみたいな大量の文字を使うようなゲームでも普通は事前に テクスチャに展開してUVで切り出して描画をするぞ。 1文字1テクスチャは色々とおかしいといわざるを得ない。 1文字単位でテクスチャの切り替えが発生するしキャッシュ効率も最悪。
- 318 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:45:27 ]
- >>316
淫乱負数について詳しく
- 319 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 23:23:35 ]
- 【淫乱負数】
デクリメント負数のサイズ (バイト単位)。柔軟な頂点フォーマット (デクリメント) 頂点バッファの場合は、 淫乱負数 は少なくとも 1 つの頂点を格納できる大きさでなければならないが、頂点サイズの倍数である必要はない。 淫乱負数 は非 FVF バッファについては検証されない。
- 320 名前:294 mailto:sage [2008/08/29(金) 00:13:09 ]
- >>309
手抜きじゃなくて、無知で初心者なだけです。 常に最善を求めて頑張っています。 >>310 とりあえず>>306は私じゃないのであしからず。 >>312 いまどきのグラボは30MBくらいいけると想定して、 古いグラボはすっぱりと切る心づもりでした。
- 321 名前:294 mailto:sage [2008/08/29(金) 00:14:46 ]
- >>317
参考意見ありがとうございます。 charがどの文字に対応するかは絶対1つずつ判定が必要ですよね。 そしたら後は、1枚から特定の場所を切り出す処理がない分、 1つずつのテクスチャにした方が効率がいいかと思ったんですが、 そうではないんでしょうか? 私はプログラムやコンピュータに触りだしたのが最近で、 キャッシュ効率(たぶんハード寄りなこと?)というのがよく分からないんですが、 大量のテクスチャを使えば一時保存領域などを頻繁に入れ替えることになるから、 その分オーバーヘッドが生じて遅くなるってことでしょうか?
- 322 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 01:21:10 ]
- >>317
その書き方では、DEFAULTはロック書き換え用だと読めるが、 そうなの? 別に実測値を出せとは言わんが、それを示すドキュメントとかあるか?
- 323 名前:デフォルトの名無しさん [2008/08/29(金) 01:25:44 ]
- 扇形を簡単に描画させる方法ってないですか?
60度の角度で上方向に扇形を描画さしたいのですが(円弧の方が上) 開始地点は275から半径50の扇形を描画さしたいのですが pD3Device->SetTexture(0, pTexture[0]); pt[0].x = 250.0f; pt[1].x = 300.0f; pt[3].x = 275.0f; pt[2].x = 275.0f; pt[0].y = 225.0f; pt[1].y = 225.0f; pt[2].y = 275.0f; pt[3].y = 275.0f; pt[0].tu = pt[3].tu = 0.0f / 1024; pt[1].tu = pt[2].tu = 200.0f / 1024; pt[0].tv = pt[1].tv = 0.0f / 1024; pt[2].tv = pt[3].tv = 200.0f / 1024; pD3Device->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,2,pt,sizeof(CUSTOMVERTEX)); これでは普通に三角形ができただけで・・・ 角度計算とかで簡単に扇形にできないでしょうか?
- 324 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 04:00:28 ]
- >>321
テクスチャの切り替えはなるべく少なくした方が高速
- 325 名前:233 mailto:sage [2008/08/29(金) 05:00:57 ]
- 解決しました
粗末な物を張ってすみませんでした
- 326 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 07:17:27 ]
- 淫乱負数って一体何なんだ
- 327 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 07:33:53 ]
- >>321
テクスチャの切り出しなんて文字コードをインデックスにして テーブルからUVを引っ張ってくるだけだろ。 今のCPUのキャッシュ容量なら余裕で全部乗る程度のキャッシュサイズだし、 別にテクスチャ自体を切り出して作るわけじゃないぞ。 「テクスチャの切り替えをする」ということはそのつど「DrawPrimitive」を呼ぶということだ。 昨今のグラフィックカードは細かいデータをたくさん出すようには設計されてないので致命的なほど遅い。 なので可能なら1枚のテクスチャに格納⇒文字全てを1個の頂点バッファに格納⇒DrawPrimitive1回で全ての文字を描画 これが実測でも理論でも最速になる。 DrawPrimitiveの連打に比べたら頂点データの作成やUVテーブルの参照なんてゴミみたいな負荷。 >322 SDKに入ってるドキュメントに書かれてるよ。 >動的な頂点バッファおよびインデックス バッファの使い方 > >理想は頂点データまたはインデックス データがまったく変化しないことですが、これは必ずしも可能ではありません。 >アプリケーションがフレームごとに頂点データまたはインデックス データを変更する場合は多くあり、 >フレームあたり複数回変更することさえあります。 >このような場合は、D3DUSAGE_DYNAMIC を使って頂点バッファまたはインデックス バッファを作成する必要があります。 >この利用法フラグによって Direct3D を頻繁なロック処理用に最適化します。 >D3DUSAGE_DYNAMIC はバッファを頻繁にロックする場合にのみ有用であり、 >変化しないデータは静的な頂点バッファまたはインデックス バッファに格納する必要があります。 テクスチャやサーフェイスの場合だとシステムメモリにコピーをいちいち作れない、 レンダリングターゲットや深度バッファなんかもDEFAULTで作る必要あるけど。
- 328 名前:327 mailto:sage [2008/08/29(金) 07:43:05 ]
- 補足。
D3DUSAGE_DYNAMICフラグはD3DPOOL_DEFAULTと一緒じゃないと使えない。 D3DPOOL_MANAGEDって単にシステムメモリにコピーもってて、 システム側のバッファ⇒DMA転送⇒VRAMのバッファってやってるだけ。 だからデバイスがロストしても復旧できる。 当然だけど描画中のバッファをLock()しようとした場合は描画終わるまで待たされる。 そうなると頻繁にバッファ書き換えるなら直接VRAMのバッファ変えるほうが速いのは当然だし DYNAMICフラグの場合はLock()する度に別のアドレス返してくるからMANAGEDみたいに データの保障は出来ないってことだな。 DYNAMICしたバッファは Lock()→新しいビデオメモリ領域をmalloc()→そのアドレスを返す→描画終わったらドライバがfree() っていう処理だから他のバッファみたいに描画中のバッファに干渉してパイプラインを止めなくてすむ。 だから書き換えないならMANAGEDでいいし、頻繁に書き換えるならDEFAULT+DYNAMICにしとけってな話。 ドキュメントの「DirectXGraphics」→「プログラミング ガイド」→「プログラミングのヒント」→「パフォーマンスの最適化」を参照。
- 329 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 11:06:50 ]
- 書き込むスレ間違えたのでマルチスレッドになるかもですが、
シーンの作成時やレンダラーの初期化時に HRESULTをいうのを使っているのですが HRESULT Renderer::Initialize(HWND hWnd, BOOL isFullScreen, int clientWidth, int clientHeight) LRESULTとの違いってなんですか? LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); ウィンドウプロシージャルを定義するときはLのほうを使って DirectXの初期化の時などはHを使うって事ですか?
- 330 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 11:23:45 ]
- LRESULTはもともとlongだったものからきてる、longで結果を返すものと思っていい。
HRESULTは内容が決まってる。COMが返すものと思っていい。 自分で作った関数は、よそから返ってきたHRESULTをそのまま返すもの以外はあまり使わないと思うよ。
- 331 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 11:36:43 ]
- >>330
なるほど〜〜 ありがとうございました!
- 332 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 12:29:25 ]
- テイルズっぽいゲームを作ろうと思っているのですがエフェクトの所で悩んでます
戦闘時のエフェクトとかってDirectXで描写するのとAdobeEffectsとかで作ったのを描写するのどっちが一般的なんですか?
- 333 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 12:39:54 ]
- 3Dなら、プログラム率高い
2Dなら、ベタでいいんじゃね? 絵の量が多いと、プログラムしないとメモリが足りないけど
- 334 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 12:40:58 ]
- 参考
ttp://rayz.skr.jp/?rayz.skr.jp/zakki/_zakki.html
- 335 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 12:47:28 ]
- >>332
このスレ64から嫁 一般的かって話なら3Dで作るのが一般的
- 336 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 13:30:03 ]
- 質問もマルチスレッドの時代になったか
- 337 名前:294 mailto:sage [2008/08/29(金) 20:40:02 ]
- >>327
文字列全てを1個の頂点バッファに格納するというのは、 同じ板ポリゴンに、位置をずらしながら1文字ずつ貼り付けていくということですよね。 板ポリの4頂点にテクスチャのUVを指定して、 板ポリ全体にテクスチャを貼り付ける方法しか知らないんですが、 板ポリゴンの一部にテクスチャを貼り付けるにはどうすればいいんでしょうか?
- 338 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:44:59 ]
- >>337
いうてる意味がわからんが「描画する文字数 x 4角形」分の大きさの頂点バッファをこしらえるだろ。
- 339 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:19:35 ]
- 1文字あたりポリゴン2枚(三角形×2)
1個の頂点バッファにたくさんポリゴンを詰め込んで、1回のDrawPrimitiveで全部描く
- 340 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:21:31 ]
- >>328
D3DPOOL_MANAGEDはレンダリングターゲットには出来ない。 ということはGPUによる書き換えは発生せず、内容の書き換えが起こるとするとすれば それは常にCPUからの場合のみ。 だとすれば、D3DPOOL_MANAGEDのリソースは、 メインメモリ側がマスタで、ビデオメモリ側がスレーブという考え方でかまわない訳で、 lockした場合は、常にメインメモリ側のポインタを返し、 unlockした時点でスレーブに反映させればいいから、別にCPUはストールしない。 と、勝手に思っていた訳だが。根拠はないが。
- 341 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:26:55 ]
- また、SDKの記述だが
D3DUSAGE_DYNAMIC+D3DPOOL_DEFAULTが D3DPOOOL_MANAGEDより優位だとは特に書いていないぞ。
- 342 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:51:45 ]
- >>340
CPUのメモリに書き込む⇒CPU→GPUの転送をする⇒GPUのバッファが描画待ち状態だった⇒さぁどうなる? >>341 毎フレームロックするような2Dのスプライトみたいなものとか、 3Dのパーティクルみたいなものには有利とは書かれているぞ。 モデルみたいな作りっぱのデータにはむしろマイナスだろう。
- 343 名前:294 mailto:sage [2008/08/30(土) 00:45:36 ]
- >>338
>>339 理解しました。頂点バッファって三角形何個でも繋げられるんですね。 今まで常に三角形2枚の長方形で1個の頂点バッファにしてました。 どうもありがとうございます。
- 344 名前:294 mailto:sage [2008/08/30(土) 00:47:27 ]
- >>328
起動時のフォントテクスチャ作成を、 D3DPOOL_DEFAULT、D3DUSAGE_DYNAMICから、 D3DPOOL_MANAGED、USAGEなしに変えたら、 LPDIRECT3DTEXTURE9#LockRectが20倍くらい速くなったんですが、 描画中だとD3DPOOL_DEFAULTの方がロック速いけど、 描画してない状態だとD3DPOOL_MANAGEDの方がロック速いってことでしょうか。 いずれにせよ、色々実測してみようと思います。
- 345 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:46:27 ]
- dxerr.lib dxguid.lib d3dx9.lib d3d9.lib このライブラリの中で
ゲーム会社の採用試験の作品提出の時に使ったまずいのってありますか?
- 346 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:53:47 ]
- まずいのはそんなことを質問するお前の頭
その時点で不採用決定だから気にするな
- 347 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:58:44 ]
- 流石にネタだろw
- 348 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:59:47 ]
- >>345
windowsアプリケーションを作る時 #include <windows.h> がないとの同じだぞ?
- 349 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:03:22 ]
- >>345
お前は心臓がなくて生きてられるか?(ペースメーカーなど除く)
- 350 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:25:28 ]
- >>345
d3d9.libだけは使ったらまずい。ほかは使っても大丈夫だよ 採用試験がんがれ! >>346-349 しんだほうがいい
- 351 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:28:48 ]
- >>345
プログラマーって>>350みたいなの多いから気をつけた方がいいよ 別に気に入らなければ答えなきゃいいだろうっていう質問をネタに遊ぶ連中だから
- 352 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:32:30 ]
- 再配布禁止なのはd3dx9***.dll系だろ・・・
|

|