DirectX総合スレ (Part8)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2008/03/12(水) 16:15:18ID:Jo1vXsg5他の言語使ってる奴はいますぐ消えろ
■過去スレ
DirectX総合スレ
Part 7: http://pc11.2ch.net/test/read.cgi/gamedev/1179516297/
Part 6: http://pc11.2ch.net/test/read.cgi/gamedev/1163691532/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
0042名前は開発中のものです。
2008/05/03(土) 13:38:27ID:9peHMeqo動的にテクスチャをロックして書き込んだ後、
そのテクスチャをスプライトとして表示する。
文字表示のためにバックバッファをロックする理由は一切無い。
0043名前は開発中のものです。
2008/05/03(土) 17:08:46ID:9cZkXa2sありがとうです。
DX9なら可能なのでしょうか?
可能ならターゲットを変えたいと思います。
主に、文字と2Dキャラの画面効果に使います。
0044名前は開発中のものです。
2008/05/03(土) 17:19:26ID:0Tw2rM0TDX8では出来ない。DX9では条件付きで出来る。
どんな画面効果に使いたいのか知らんが、GDIの機能で可能なことは
ほとんどDirect3Dでも出来ると思うが。
0045名前は開発中のものです。
2008/05/03(土) 17:42:55ID:9cZkXa2sだったらキャラは最初からCreateDIBで組んだ方が早いかな、と思いまして。
そして、背景をD3DXで描画して、
キャラをCreateDIBからサーフェスに転送してPresentをしたいと考えています。
0046名前は開発中のものです。
2008/05/03(土) 18:17:45ID:9cZkXa2sそもそも、lockかけられるのでしょうか>DX9 or DX8
0047名前は開発中のものです。
2008/05/03(土) 18:23:47ID:Qrf6iXEbそういうやり方がしたいのならGDIを使えばいいし、DXを使うならDXにあった方法を使えばいい。
0048名前は開発中のものです。
2008/05/03(土) 18:37:37ID:9cZkXa2sシェーディングをかけないブレゼンハム3Dまでなら自力で組めますが、
現代のゲームではちと見た目がきついっす。
キャラが2Dでビルボードじゃ出来ない処理を要求されているので、
CreateDIBとDXの併用になりそうです。
lockはDX8でもかけられますか?
0049名前は開発中のものです。
2008/05/03(土) 18:43:40ID:9cZkXa2sキャラだけラスタかけたりしたいそうです>企画者
0050名前は開発中のものです。
2008/05/03(土) 18:51:04ID:9peHMeqoだったらロード時にテクスチャに使う全部文字を書いちゃえよ。実行時にロックする必要ないでしょ。
Direct3Dの世界ではテクスチャにさえ書き込んでしまえばあとはどうにでもなる。
ぶっちゃけsjisの文字コード全部書き込んでも圧縮テクスチャ使えるなら
VRAMの消費は数メガ程度だぞ。(馬鹿デカイ文字は無理だが)
0051名前は開発中のものです。
2008/05/03(土) 18:57:31ID:9cZkXa2s7MB位ですもんね。そのセンで考えてみます。
本当は倍角の48ドットフォントをBit単位で持って、4bitでアンチをかけたいのですが、
考えが古いですね(^^;
0052名前は開発中のものです。
2008/05/03(土) 18:59:05ID:9cZkXa2s0053名前は開発中のものです。
2008/05/03(土) 19:06:28ID:9peHMeqoその用途ならGetGlyphOutlineから得たラスタデータをA4R4G4B4のテクスチャに
書き込むのがお勧め(特殊っぽいフォーマットだが実際はほぼ全てのVGAでサポートされてる)
0054名前は開発中のものです。
2008/05/04(日) 11:29:23ID:6OF83MEc0055名前は開発中のものです。
2008/05/04(日) 12:06:45ID:rCaAnAix0056名前は開発中のものです。
2008/05/04(日) 12:35:56ID:HYL1vr0j0057名前は開発中のものです。
2008/05/04(日) 13:25:34ID:g3p8Tn2z世間にはピクセルシェーダーや頂点シェーダーというものもある。
ラスタなら1ドットの高さのポリゴンを並べてうねうねやればそういう風に見える。
0058名前は開発中のものです。
2008/05/04(日) 15:01:21ID:6OF83MEcもしそうだとしたら、凄い技術だね。
0059名前は開発中のものです。
2008/05/05(月) 04:32:23ID:SUehAUO03Dに2D表示するぐらいがそんなに凄い技術なの?
0060名前は開発中のものです。
2008/05/05(月) 05:37:52ID:aMcrPD700061名前は開発中のものです。
2008/05/05(月) 06:19:27ID:9KzMv7vI0062名前は開発中のものです。
2008/05/05(月) 11:28:10ID:+OVxubzPDX9でバックサーフェスの拾得は出来たけど、描画できんしDX9遅いし。
全てテクスチャで処理するとして、文字の色は2枚目のテクスチャを重ねるでok?
色のテクスチャはLockRectで書き込むって感じでok?
2Dは素直にCreateDIBSection使った方が幸せになれる予感。
0063名前は開発中のものです。
2008/05/05(月) 12:48:04ID:+OVxubzPIntelの古い奴だとやばい。
0064名前は開発中のものです。
2008/05/05(月) 16:00:06ID:/b4BEf3Pどうしてもしたければ、せめてまとめれ
いちいち報告するな
0065名前は開発中のものです。
2008/05/05(月) 22:28:12ID:KNcbC22k0066名前は開発中のものです。
2008/05/05(月) 23:15:55ID:IY7MbHfF社会生活に。
0067名前は開発中のものです。
2008/05/05(月) 23:50:49ID:CTHIy0Lfいまは CPU パワーもあるから、
半透明とかもごり押しでやってもある程度フレームレートでるけど、
GPU 使った方が楽。他のことにエネルギー使えばいいのに。
0068名前は開発中のものです。
2008/05/06(火) 06:10:40ID:sGj5OVNm…うーん、わからん…
0069名前は開発中のものです。
2008/05/10(土) 21:10:07ID:cC83BuII0070名前は開発中のものです。
2008/05/17(土) 10:35:26ID:bL7nmuJE一番軽い方法を教えてください
0071名前は開発中のものです。
2008/05/17(土) 10:37:11ID:Cg6oj/2U0072名前は開発中のものです。
2008/05/24(土) 23:34:55ID:6QB8Oyw/ttp://ufcpp.net/study/linear/determinant.html#sweeping
0073名前は開発中のものです。
2008/06/03(火) 10:03:24ID:j//kSg4Tパノラマ画像から6面のキューブマップ用のテクスチャを生成
するツールってありますか?フリーであればうれしいのですが…
よろしくお願いします。
0074名前は開発中のものです。
2008/06/03(火) 11:34:47ID:zcDBju+Cttp://www.google.co.jp/search?hl=ja&q=panoramic+image+cubemap&lr=
↑このサイトはすごいよ。大抵の物は見つかる。
0075名前は開発中のものです。
2008/06/03(火) 17:36:16ID:uR52q4hGで三角形が回りません。これは回らないものなのですか?
文章もソースもどう見ても回しているようにしか見えないのですが、何故か回りません。
しかしタイトルが定義とあるので、定義だけしているとも解釈できます。
回す部分のソース
D3DXMATRIX matWorld;
D3DXMatrixRotationY( &matWorld, timeGetTime()/150.0f );
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
何故回らないのか、教えてください><
0076名前は開発中のものです。
2008/06/03(火) 18:30:32ID:n386hU5yたぶんrhwを含むフォーマットで描画しているせいだろう。
FVFにrhwを含む場合は座標変換はスキップされる。
0077名前は開発中のものです。
2008/06/03(火) 18:36:12ID:uR52q4hGrhwを使っていました。
なるほどrhwはトランスフォーム済みの固定オブジェクト専用なのですね。
ありがとうございます。
0078名前は開発中のものです。
2008/06/03(火) 21:18:55ID:mbHLPAZr0079名前は開発中のものです。
2008/06/04(水) 14:29:18ID:K2bzFLiOそれとも、特定軸を静止モデルが向いている方向に回転したクオータニオンにしてる?
後者の方がモーションの共有化とかも出来そうだけど、
前者の方が楽と言えば楽だよな。殆ど変わらないといえば変わらないのかもしれんが。
0080名前は開発中のものです。
2008/06/04(水) 17:27:13ID:ubsD6FOxだから普段は後者でやってる
0081名前は開発中のものです。
2008/06/04(水) 20:06:26ID:0AKV8uXYありがとうございます。日本語のキーワードではツールは全然
ひっかからなくて難儀していました。
しばらく眺めてみます。
0082名前は開発中のものです。
2008/06/07(土) 22:19:06ID:UvZAvFMXttp://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&DisplayLang=en
DirectX End-User Runtimes (June 2008)
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=822640ab-0983-4c41-9c70-632f6f42c557&DisplayLang=en
DirectX Software Development Kit
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=519aae99-b701-4ca1-8495-39ddde9d7030&DisplayLang=en
0083名前は開発中のものです。
2008/06/09(月) 00:21:36ID:7fcEsoAV0084名前は開発中のものです。
2008/06/12(木) 13:39:33ID:fzsMfOLk条件は元のテクスチャがあり、ある矩形の領域を別のテクスチャで上書きするというものです。
テクスチャをロックして書き換える方法と、レンダリングターゲットとなるテクスチャに先に下地のテクスチャを描画して、上書きしたいテクスチャを後に描画する方法のどちらが高速なのでしょうか?
この様な場合テクスチャブレンディングを使うのが妥当なのでしょうが、諸々の事情で私のグラボで取り扱えるステージ数(4ステージ)を使いきってしまったのでこの様なブレンディング済みテクスチャをあらかじめ用意するといった邪道な実装にすることになってしまいましたw
0085名前は開発中のものです。
2008/06/12(木) 14:11:27ID:rHcvi9p8毎回思うんだが
どうして自分で確認しないんだろうか
誰かが「前者のほうが速いよ」と言ったら
そのまま信じて前者で実装するのだろうか
最近のプログラマは不思議だ
0086名前は開発中のものです。
2008/06/12(木) 15:17:52ID:W2HuJRyFA.やってみりゃいいだろ
0087名前は開発中のものです。
2008/06/12(木) 17:46:23ID:TL19mqdyどうでもいいが、最後のwは笑うところなのか?
0088名前は開発中のものです。
2008/06/12(木) 18:52:23ID:jAc1OSoIの代わりなんだろ
0089名前は開発中のものです。
2008/06/12(木) 19:33:15ID:24iuPwV5ゆとり世代
0090名前は開発中のものです。
2008/06/12(木) 19:34:24ID:24iuPwV5やることが多いからな。
一個一個自分でやってると、時間が足りない。
0091名前は開発中のものです。
2008/06/12(木) 19:55:16ID:VjP0i/a5答えをもらったとして、それが自分の環境に一致しているかの判断しなきゃならん
貰った答えが環境相違で違ってるかもしれない。
変に聞き回っている無駄な時間を浪費するよりも、
答えが出るのが解っていることは やっちゃった方が早い
0092名前は開発中のものです。
2008/06/12(木) 21:47:31ID:32NcRgJXマジレスしてやるよ。
マルチパスレンダリングしろ。その方が圧倒的に速い。
1ピクセルずつ書き換えるのがまずCPUパワーを食う。
そして、ロックにかかる時間も大きい。
GPUにやらせて、CPUパワーは有意義に使う。
俺は昔はハードウェアアクセラレーターがある場合と
無い場合で条件わけしてコードを書き換えてたが、
どうあがいてもハードウェアアクセラレーターの転送には勝てない。
まぁ、>>84 みたいな質問をすると言うことはヘタクソな実装、
たとえば、テクスチャを1テクセルずつ転送とかして、
「ロックした方が速いです」とか言いそうな気もするが。
0093名前は開発中のものです。
2008/06/12(木) 22:29:51ID:24iuPwV5よく読んだらCPUvsGPUな質問じゃねーか
駄目だこりゃ
0094名前は開発中のものです。
2008/06/13(金) 00:40:21ID:wWwbVMxwあと、拡大縮小、回転を含むならGPUに任せた方が早いような気がする
0095名前は開発中のものです。
2008/06/13(金) 03:11:27ID:lkjDe53G本気でそう思ってるならゆとり乙といわざるをえない
0096名前は開発中のものです。
2008/06/13(金) 07:18:31ID:dAMxMqctその間に自分は別のことを進めるという技を覚えた。
やっぱりマルチコア時代だしな。みんなには内緒だよ
0097名前は開発中のものです。
2008/06/13(金) 13:30:54ID:aX+CU4Pmはわわー
0098名前は開発中のものです。
2008/06/14(土) 13:41:26ID:+oPJi5is個人的には実測ってのも抵抗があるんだよな
測ってみたらAよりBの方が速かった -> B採用
って、論理的じゃなくて感覚的でちょっと違うような。
0099名前は開発中のものです。
2008/06/14(土) 13:58:35ID:dE2SWOayGPUに負荷をかけてでもCPUを浮かせる方がいい場合もあるし
テクスチャで細工したりするほうがいい場合もあるし。
0100名前は開発中のものです。
2008/06/14(土) 15:44:32ID:+oPJi5is自分でifだのwhileだの加算だの代入だの書いて作る処理より
ライブラリ関数1つ呼んで同等の結果が得られるなら、
そっちを選んどけってことだよな。
0101名前は開発中のものです。
2008/06/14(土) 17:51:10ID:moyItCiDGPUでも自分で加算のコードを書いて
1ピクセルずつ処理するんだけど。
0102名前は開発中のものです。
2008/06/14(土) 18:32:06ID:42PAiJkh0103名前は開発中のものです。
2008/06/14(土) 20:14:11ID:12E+Sv+3マジレスすると、バブル期を生き抜いた基地外オッサン達にそんなこと言っても全く無意味だぜ。
効率という概念が無いからな。
なまじ金があるからどうせ勉強すらせずに遊びまくりだったんだろ。
たぶん、車輪の再発明という言葉の意味すら知らないんだろうな。
しかもその金を自分が努力して稼いだとか勘違いしてて若年連中に説教するからな。
もろにゆとり世代だった俺から見てもオッサン連中は頭おかしいわ。まじで。
0104名前は開発中のものです。
2008/06/14(土) 21:19:07ID:sQYb7t+N0105名前は開発中のものです。
2008/06/15(日) 01:41:40ID:GhI7cfHMまともな文章も書けないとは、さすが、ゆとり世代っすねw
0106名前は開発中のものです。
2008/06/15(日) 07:31:27ID:4E2F6CNQ「自分で考えろ」と言われると何もできなくなるゆとり世代乙
そんな奴は戦力にならないからクビになって当然
いやホント、ゆとりは教えてクンばっかであきれるわ
0107名前は開発中のものです。
2008/06/15(日) 08:02:17ID:qZlaDy59ネット禁止になったら仕事ペースが1/10未満に落ちたんでわかった。
会社の生リモホ丸出しで各板で聞きまくる「ゆとりくん」にはやめてもらった。
入社試験のとき持ってきたゲームは某有名な人のソースをいじっただけらしい。
0108名前は開発中のものです。
2008/06/15(日) 08:24:30ID:4E2F6CNQ0109名前は開発中のものです。
2008/06/15(日) 10:45:09ID:qZlaDy590110名前は開発中のものです。
2008/06/15(日) 11:26:43ID:+iOP3YTdというか、故意に漏洩したら解雇だろうけど
0111名前は開発中のものです。
2008/06/15(日) 11:33:42ID:E2JHmr/C0112名前は開発中のものです。
2008/06/15(日) 11:40:40ID:I6OdKveL成長しない新人と成長させない上司先輩はどこにでもいるし
0113名前は開発中のものです。
2008/06/15(日) 11:48:06ID:v7yJWqJ+会社自体がゆとり。
0114名前は開発中のものです。
2008/06/15(日) 12:06:40ID:4E2F6CNQもちろんそいつなりに考えたり調べたりした上の質問なら1だけでも教えるのはありだが
自分の脳みそ使わせないと応用性のない人間にしかならんからね
0115名前は開発中のものです。
2008/06/15(日) 19:52:28ID:WFjiCAcV0116名前は開発中のものです。
2008/06/15(日) 20:01:11ID:E2JHmr/C0117名前は開発中のものです。
2008/06/15(日) 22:59:28ID:XaIxLvOe0118名前は開発中のものです。
2008/06/16(月) 00:49:24ID:qvaUGwk90119名前は開発中のものです。
2008/06/16(月) 02:18:48ID:3ygB0R6EOggを通常再生することには成功したのですが、5分位の曲を再生するとロードとデコードで5秒近くかかってしまいます。
なのでストリーミング再生したいのですが、どのような方法があるのでしょうか?
0120名前は開発中のものです。
2008/06/16(月) 02:34:16ID:CfYCH8oKfmod使えばいいんじゃね?
0121名前は開発中のものです。
2008/06/16(月) 09:03:03ID:nkTbEW2sOggストリームするなら素直にDirectSound使えよ
0122名前は開発中のものです。
2008/06/19(木) 17:04:20ID:jfby45iB最初、なにが原因で落ちてるのかわからなかった。
0123名前は開発中のものです。
2008/06/19(木) 19:31:15ID:rOBzS8e6D3DPOOL_SYSTEMMEMのサーフェスをロックして書き換えて、
随時他サーフェスにUploadSurfaceしてるんですが、XPではまったく問題が無いのに
VistaだとたまにLockRect関数で処理が停止されます。
D3DLOCK_DONOTWAITを与えてやって、失敗時逃がすようにすると
今度は成功したときUnlockRectで停止されます。
これはどうすればいいんでしょうか?
0124名前は開発中のものです。
2008/06/19(木) 21:21:53ID:J9NyTZGtそれはおかしくないか?
メモリ不足ならOUTOFMEMORYエラー返ってくるし。
DONOWAITってGPUが使用中のときはスルーするだけだから
そこで失敗してたらUnLock()しちゃ駄目だろ。
よほどの理由がない限りはサーフェイスロックしてCPUで書き換えなんて
しないでピクセルシェーダーで直接書いた方がいい。
0125名前は開発中のものです。
2008/06/19(木) 22:36:10ID:jfby45iBいや、メモリ不足はない。ちゃんとチェックは入れてるし。
ちなみにドライバはオメガドライバ。
普通のドライバだとスカイプが当たるので、オメガドライバを使ってるんだけどね。
確保する頂点バッファの数を減らしたら普通に動くようになった。
0126123
2008/06/19(木) 22:37:44ID:rOBzS8e6テキストをGetGlyphOutlineで取得してセコセコSYSTEMMEMサーフェスに書いてるんですよ
もしかしたら別スレッドでUpdateSurfaceしてるのが原因とか?
0127名前は開発中のものです。
2008/06/19(木) 22:53:09ID:J9NyTZGtスレッド分けてるなら同期に関しては気を使わないと死亡だぞ。
GetGlyphOutline()なら最初からD3DXFont()使う方が速いし便利じゃね?とか思うけど。
あるいは利用する文字を事前に画像に全部展開しておくか。
0128123
2008/06/19(木) 23:41:05ID:rOBzS8e6D3DXFontは60FPSだと重くて使い物にならないだろ
文章表示だから、最初にちょっと重い処理をしてあとはテクスチャから描画するだけ
一応クリティカルセクションで排他制御はしてるんだけどね
XPや2000で問題なくてVistaで動かないとか、どうしてもゲイツを疑ってしまう・・・
0129名前は開発中のものです。
2008/06/19(木) 23:45:33ID:J9NyTZGtGetGlyphOutline()を文字毎に呼んでわざわざサーフェイス転送する方が使い物にならないだろ・・・。
D3DXFont()は中である程度の文字はテクスチャにキャッシュ出来るようになってるぞ。
0130名前は開発中のものです。
2008/06/20(金) 00:04:24ID:G3IoCWKiそうなのか?昔20文字表示しただけでFPSがた落ちだったんだが
まあ他にも面倒なことをやってまで、サーフェス転送する必要があるんでこの方法にしてる
0131名前は開発中のものです。
2008/06/20(金) 00:08:44ID:88LRPetr俺も似たようなシステムでフォントを描画してる。
たしか、Vista でもそんなに遜色なく動いた気がする。
ちなみにシングルスレッドでやってる。
一回、シングルスレッドにして動かしてみたら?
>>129
キャッシュを作れば軽いよ。
うちは、キャッシュするフォントとは別に最初にから用意するフォントと
2つシステムを持ってて自動で判断して使い分けるようになってる。
キャッシュのヒット率を上げるような最適化はまだやってない。
0132名前は開発中のものです。
2008/06/20(金) 00:08:49ID:3x+Mh2k+コンシューマーでは当たり前の方法だけどWindowsだと意外とマイナー。
どんなものでも事前に作っておけるならそれが最速だし、
どうしても動的に作る必要があるならピクセルシェーダー使うかストリームアウト使う方がいい。
0133名前は開発中のものです。
2008/06/20(金) 01:02:57ID:G3IoCWKiとりあえずシングルスレッド仕様にしてみた
コードがすっきりしていい感じ。XPでは問題なく動作
Vistaは大学にしか無いから、明日試してみます
0134名前は開発中のものです。
2008/06/20(金) 04:54:23ID:DQo2PM0/Windowsのシステムフォントを画像に展開するのはライセンス的にまずくなかったか?
だから動的に描画してるんだと思ったが。
俺はFreeType使って描画してる。ノベルゲームでも1000字程度らしいから、文字を走査
したテーブルを作って、最初にまとめて生成してるよ。
後はテクスチャロックして適宜転送してる。
ビデオメモリにの容量に問題ないなら、全部のっけたほうがいいんだろうけどね。
0135名前は開発中のものです。
2008/06/20(金) 07:31:33ID:6THOk7MT0136名前は開発中のものです。
2008/06/20(金) 10:51:47ID:88LRPetr0137名前は開発中のものです。
2008/06/20(金) 12:49:44ID:LR2HafI7ボケるのが嫌で俺は使ってない。(特に横線)
AA無しの横幅4倍で描画して、横だけ1/4に縮小が一番バランスがいいと思う。
0138133
2008/06/20(金) 17:20:12ID:G3IoCWKi>>136
チャットなんてそんなに難しい漢字は使わないから、
フォントイメージキャッシュをうまく作れば大丈夫だろ
俺はテクスチャサーフェスに文章を直接書き込んじゃうけどな
テキストボックスはD3DXFontで表示
0139名前は開発中のものです。
2008/06/20(金) 18:36:40ID:yFi5+cKLシフトJISの6000文字分をキャッシュするのに1時間以上待たされることになるから
現実的な方法ではないな。
0140名前は開発中のものです。
2008/06/20(金) 19:57:23ID:88LRPetrとりあえず良かったね。
いや、この辺りの実装は人によって違うだろうから、
まぁ、文字が表示できればそれで良いとは思うけどね。
ちなみに、すごーく前は俺はGDI描画用のビットマップを
CreateDIBSection で作ってそれに描いて、ロックしてから転送してた。
最適化矩形で転送してたけど、重かった。
0141名前は開発中のものです。
2008/06/20(金) 19:59:38ID:88LRPetr6000文字でもそんなにかかるわけ無い。
6000文字だとメモリが無駄な方が大きい。
サイズ違いのフォントを描画することも考えると、
動的なキャッシュが一番メリットあると思うけどなぁ。
■ このスレッドは過去ログ倉庫に格納されています