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

DirectX総合スレ (Part8)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2008/03/12(水) 16:15:18ID:Jo1vXsg5
言語はC++
他の言語使ってる奴はいますぐ消えろ

■過去スレ

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
>>41&42
ありがとうです。
DX9なら可能なのでしょうか?
可能ならターゲットを変えたいと思います。

主に、文字と2Dキャラの画面効果に使います。
0044名前は開発中のものです。2008/05/03(土) 17:19:26ID:0Tw2rM0T
>>43
DX8では出来ない。DX9では条件付きで出来る。
どんな画面効果に使いたいのか知らんが、GDIの機能で可能なことは
ほとんどDirect3Dでも出来ると思うが。
0045名前は開発中のものです。2008/05/03(土) 17:42:55ID:9cZkXa2s
直接ピクセルをアクセスしたいんですが、lockをかけると遅いと聞いて、
だったらキャラは最初からCreateDIBで組んだ方が早いかな、と思いまして。
そして、背景をD3DXで描画して、
キャラをCreateDIBからサーフェスに転送してPresentをしたいと考えています。
0046名前は開発中のものです。2008/05/03(土) 18:17:45ID:9cZkXa2s
どちちらにしろ、lockをかけないといけないのでしょうね。
そもそも、lockかけられるのでしょうか>DX9 or DX8
0047名前は開発中のものです。2008/05/03(土) 18:23:47ID:Qrf6iXEb
ロックはかけられるが、オマエさんのしたい事は他にいくらでも大体処理がある。
そういうやり方がしたいのならGDIを使えばいいし、DXを使うならDXにあった方法を使えばいい。
0048名前は開発中のものです。2008/05/03(土) 18:37:37ID:9cZkXa2s
背景が3Dなんですよ。
シェーディングをかけないブレゼンハム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:9cZkXa2s
24ドットフォントでも1bitを(アンチエイリアスのため)4byteで2304byteで、
7MB位ですもんね。そのセンで考えてみます。
本当は倍角の48ドットフォントをBit単位で持って、4bitでアンチをかけたいのですが、
考えが古いですね(^^;
0052名前は開発中のものです。2008/05/03(土) 18:59:05ID:9cZkXa2s
2Dキャラのラスタも、どうにかなりますかね?
0053名前は開発中のものです。2008/05/03(土) 19:06:28ID:9peHMeqo
圧縮テクスチャだと品質が問題になるのでそこは気をつけた方がいいけど。
その用途ならGetGlyphOutlineから得たラスタデータをA4R4G4B4のテクスチャに
書き込むのがお勧め(特殊っぽいフォーマットだが実際はほぼ全てのVGAでサポートされてる)
0054名前は開発中のものです。2008/05/04(日) 11:29:23ID:6OF83MEc
ランス6とかだと、DX9の3D画面に2D表示してるけど、どうやってるのかな。
0055名前は開発中のものです。2008/05/04(日) 12:06:45ID:rCaAnAix
普通の四角形ポリゴンじゃないの
0056名前は開発中のものです。2008/05/04(日) 12:35:56ID:HYL1vr0j
テクスチャじゃないの
0057名前は開発中のものです。2008/05/04(日) 13:25:34ID:g3p8Tn2z
>>52
世間にはピクセルシェーダーや頂点シェーダーというものもある。
ラスタなら1ドットの高さのポリゴンを並べてうねうねやればそういう風に見える。
0058名前は開発中のものです。2008/05/04(日) 15:01:21ID:6OF83MEc
DirectX版とソフト3D版で違いが分からなかったから、多分違うんじゃない?
もしそうだとしたら、凄い技術だね。
0059名前は開発中のものです。2008/05/05(月) 04:32:23ID:SUehAUO0
ランスやった事ないから知らんけど
3Dに2D表示するぐらいがそんなに凄い技術なの?
0060名前は開発中のものです。2008/05/05(月) 05:37:52ID:aMcrPD70
素人からすれば凄い技術なのかも
0061名前は開発中のものです。2008/05/05(月) 06:19:27ID:9KzMv7vI
3D格闘ゲームの体力ゲージを見て大興奮するような変態だと予想
0062名前は開発中のものです。2008/05/05(月) 11:28:10ID:+OVxubzP
いや。わけわかんね。しょうがないんでDirectX7を使ってる。
DX9でバックサーフェスの拾得は出来たけど、描画できんしDX9遅いし。
全てテクスチャで処理するとして、文字の色は2枚目のテクスチャを重ねるでok?
色のテクスチャはLockRectで書き込むって感じでok?
2Dは素直にCreateDIBSection使った方が幸せになれる予感。
0063名前は開発中のものです。2008/05/05(月) 12:48:04ID:+OVxubzP
テクスチャへの書き込み出来たけどさ、ドライバによって色が違う(^^;
Intelの古い奴だとやばい。
0064名前は開発中のものです。2008/05/05(月) 16:00:06ID:/b4BEf3P
日記にするのは止めてくれ
どうしてもしたければ、せめてまとめれ
いちいち報告するな
0065名前は開発中のものです。2008/05/05(月) 22:28:12ID:KNcbC22k
日記を書いちゃいかんっていう法律でもできたか?
0066名前は開発中のものです。2008/05/05(月) 23:15:55ID:IY7MbHfF
法律に背かなきゃなんでもやって良いと考えているのなら、向かないよ
社会生活に。
0067名前は開発中のものです。2008/05/05(月) 23:50:49ID:CTHIy0Lf
2Dは D3DXSprite かなんかつかっとけよ。
いまは CPU パワーもあるから、
半透明とかもごり押しでやってもある程度フレームレートでるけど、
GPU 使った方が楽。他のことにエネルギー使えばいいのに。
0068名前は開発中のものです。2008/05/06(火) 06:10:40ID:sGj5OVNm
変換済頂点指定して板ポリ作成、ってそう言う事じゃないのか?
…うーん、わからん…
0069名前は開発中のものです。2008/05/10(土) 21:10:07ID:cC83BuII
色は細かくなけりゃ頂点カラーと乗算で縦横グラデまでならかけれるしロック無いし早いだろ
0070名前は開発中のものです。2008/05/17(土) 10:35:26ID:bL7nmuJE
3*3の逆行列を求めるにはどうすればいいですか
一番軽い方法を教えてください
0071名前は開発中のものです。2008/05/17(土) 10:37:11ID:Cg6oj/2U
正規直行してるなら転置。
0072名前は開発中のものです。2008/05/24(土) 23:34:55ID:6QB8Oyw/
>>70
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+C
>>73
ttp://www.google.co.jp/search?hl=ja&q=panoramic+image+cubemap&lr=

↑このサイトはすごいよ。大抵の物は見つかる。

0075名前は開発中のものです。2008/06/03(火) 17:36:16ID:uR52q4hG
DirectX9.0の日本語ヘルプの「ステップ 1 : ワールド トランスフォーム行列の定義」
で三角形が回りません。これは回らないものなのですか?
文章もソースもどう見ても回しているようにしか見えないのですが、何故か回りません。
しかしタイトルが定義とあるので、定義だけしているとも解釈できます。

回す部分のソース
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:uR52q4hG
>>76
rhwを使っていました。
なるほどrhwはトランスフォーム済みの固定オブジェクト専用なのですね。
ありがとうございます。
0078名前は開発中のものです。2008/06/03(火) 21:18:55ID:mbHLPAZr
凄腕エスパー発見w
0079名前は開発中のものです。2008/06/04(水) 14:29:18ID:K2bzFLiO
ボンの初期状態ってクオータニオン(0,0,0,1)にしてる?
それとも、特定軸を静止モデルが向いている方向に回転したクオータニオンにしてる?
後者の方がモーションの共有化とかも出来そうだけど、
前者の方が楽と言えば楽だよな。殆ど変わらないといえば変わらないのかもしれんが。
0080名前は開発中のものです。2008/06/04(水) 17:27:13ID:ubsD6FOx
0,0,0,1(回転しない)にするもっともらしい理由があればそうする
だから普段は後者でやってる
0081名前は開発中のものです。2008/06/04(水) 20:06:26ID:0AKV8uXY
>>74
ありがとうございます。日本語のキーワードではツールは全然
ひっかからなくて難儀していました。
しばらく眺めてみます。
0082名前は開発中のものです。2008/06/07(土) 22:19:06ID:UvZAvFMX
DirectX End-User Runtime Web Installer
ttp://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:7fcEsoAV
ubershader ってどういう物?
0084名前は開発中のものです。2008/06/12(木) 13:39:33ID:fzsMfOLk
テクスチャの書き換えに関して質問があります。
条件は元のテクスチャがあり、ある矩形の領域を別のテクスチャで上書きするというものです。

テクスチャをロックして書き換える方法と、レンダリングターゲットとなるテクスチャに先に下地のテクスチャを描画して、上書きしたいテクスチャを後に描画する方法のどちらが高速なのでしょうか?

この様な場合テクスチャブレンディングを使うのが妥当なのでしょうが、諸々の事情で私のグラボで取り扱えるステージ数(4ステージ)を使いきってしまったのでこの様なブレンディング済みテクスチャをあらかじめ用意するといった邪道な実装にすることになってしまいましたw
0085名前は開発中のものです。2008/06/12(木) 14:11:27ID:rHcvi9p8
最近のプログラマは不思議だ

毎回思うんだが
どうして自分で確認しないんだろうか

誰かが「前者のほうが速いよ」と言ったら
そのまま信じて前者で実装するのだろうか

最近のプログラマは不思議だ
0086名前は開発中のものです。2008/06/12(木) 15:17:52ID:W2HuJRyF
Q.どちらが高速なのでしょうか
A.やってみりゃいいだろ
0087名前は開発中のものです。2008/06/12(木) 17:46:23ID:TL19mqdy
>>84
どうでもいいが、最後のwは笑うところなのか?
0088名前は開発中のものです。2008/06/12(木) 18:52:23ID:jAc1OSoI
(苦笑
の代わりなんだろ
0089名前は開発中のものです。2008/06/12(木) 19:33:15ID:24iuPwV5
>>85
ゆとり世代
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
>>84
マジレスしてやるよ。

マルチパスレンダリングしろ。その方が圧倒的に速い。
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
>>90
本気でそう思ってるならゆとり乙といわざるをえない
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
>>85-86
個人的には実測ってのも抵抗があるんだよな
測ってみたらAよりBの方が速かった -> B採用
って、論理的じゃなくて感覚的でちょっと違うような。
0099名前は開発中のものです。2008/06/14(土) 13:58:35ID:dE2SWOay
グラフィックカードがらみになると単にGPUを高速化すればいいってもんじゃないからなぁ・・・。
GPUに負荷をかけてでもCPUを浮かせる方がいい場合もあるし
テクスチャで細工したりするほうがいい場合もあるし。
0100名前は開発中のものです。2008/06/14(土) 15:44:32ID:+oPJi5is
結局のところ、どのプログラムにでも当てはまることだが
自分でifだのwhileだの加算だの代入だの書いて作る処理より
ライブラリ関数1つ呼んで同等の結果が得られるなら、
そっちを選んどけってことだよな。
0101名前は開発中のものです。2008/06/14(土) 17:51:10ID:moyItCiD
>>100
GPUでも自分で加算のコードを書いて
1ピクセルずつ処理するんだけど。
0102名前は開発中のものです。2008/06/14(土) 18:32:06ID:42PAiJkh
原理を理解したうえで同等の結果を得られる関数を使うんならいいけど。。。
0103名前は開発中のものです。2008/06/14(土) 20:14:11ID:12E+Sv+3
>>90
マジレスすると、バブル期を生き抜いた基地外オッサン達にそんなこと言っても全く無意味だぜ。
効率という概念が無いからな。
なまじ金があるからどうせ勉強すらせずに遊びまくりだったんだろ。
たぶん、車輪の再発明という言葉の意味すら知らないんだろうな。
しかもその金を自分が努力して稼いだとか勘違いしてて若年連中に説教するからな。
もろにゆとり世代だった俺から見てもオッサン連中は頭おかしいわ。まじで。
0104名前は開発中のものです。2008/06/14(土) 21:19:07ID:sQYb7t+N
どんな連中を指して言ってるのか知らないが、世間知らずなのまるだしだぞ
0105名前は開発中のものです。2008/06/15(日) 01:41:40ID:GhI7cfHM
>>103
まともな文章も書けないとは、さすが、ゆとり世代っすねw
0106名前は開発中のものです。2008/06/15(日) 07:31:27ID:4E2F6CNQ
>>103
「自分で考えろ」と言われると何もできなくなるゆとり世代乙
そんな奴は戦力にならないからクビになって当然

いやホント、ゆとりは教えてクンばっかであきれるわ
0107名前は開発中のものです。2008/06/15(日) 08:02:17ID:qZlaDy59
うちの「ゆとりくん」は、ネットでサンプル拾ってこないと何もできない子。
ネット禁止になったら仕事ペースが1/10未満に落ちたんでわかった。
会社の生リモホ丸出しで各板で聞きまくる「ゆとりくん」にはやめてもらった。
入社試験のとき持ってきたゲームは某有名な人のソースをいじっただけらしい。
0108名前は開発中のものです。2008/06/15(日) 08:24:30ID:4E2F6CNQ
まあプログラマまでネット全面禁止にする会社もどうかと思うけどな
0109名前は開発中のものです。2008/06/15(日) 10:45:09ID:qZlaDy59
他所にソースや生データ流したバカがいたから禁止になった(それも「ゆとりくん」なんだが)
0110名前は開発中のものです。2008/06/15(日) 11:26:43ID:+iOP3YTd
「流した」理由が漏洩じゃないなら、特定人とか特定PCのみでも使えるようにしないと生産性がた落ちにならないか?ゲームはそうでもないのかな
というか、故意に漏洩したら解雇だろうけど
0111名前は開発中のものです。2008/06/15(日) 11:33:42ID:E2JHmr/C
ネットできないとモチベーションも下がるよね
0112名前は開発中のものです。2008/06/15(日) 11:40:40ID:I6OdKveL
ゆとりと言っても大抵の人間は社内で成長するよ
成長しない新人と成長させない上司先輩はどこにでもいるし
0113名前は開発中のものです。2008/06/15(日) 11:48:06ID:v7yJWqJ+
最近の会社は新人教育のノウハウすら無くしてしまったからな。
会社自体がゆとり。
0114名前は開発中のものです。2008/06/15(日) 12:06:40ID:4E2F6CNQ
教えてクンの質問に1〜10まで答えるのは教育がなってない上司のする事だな
もちろんそいつなりに考えたり調べたりした上の質問なら1だけでも教えるのはありだが
自分の脳みそ使わせないと応用性のない人間にしかならんからね
0115名前は開発中のものです。2008/06/15(日) 19:52:28ID:WFjiCAcV
オッサンだけど、ネット禁止だと俺も効率10分の1に落ちる自信があるんだが。
0116名前は開発中のものです。2008/06/15(日) 20:01:11ID:E2JHmr/C
俺なんか仕事しなくなる自信がある
0117名前は開発中のものです。2008/06/15(日) 22:59:28ID:XaIxLvOe
ネット出来なくなったら Hello world の綴りを確かめられず不安になって胃に穴が開くマは少なくないと聞く
0118名前は開発中のものです。2008/06/16(月) 00:49:24ID:qvaUGwk9
リファレンスをネットに頼ってるな。
0119名前は開発中のものです。2008/06/16(月) 02:18:48ID:3ygB0R6E
DirectMusicでOggをストリーミング再生する方法について調べています。
Oggを通常再生することには成功したのですが、5分位の曲を再生するとロードとデコードで5秒近くかかってしまいます。
なのでストリーミング再生したいのですが、どのような方法があるのでしょうか?
0120名前は開発中のものです。2008/06/16(月) 02:34:16ID:CfYCH8oK
>>119
fmod使えばいいんじゃね?
0121名前は開発中のものです。2008/06/16(月) 09:03:03ID:nkTbEW2s
>>119
Oggストリームするなら素直にDirectSound使えよ
0122名前は開発中のものです。2008/06/19(木) 17:04:20ID:jfby45iB
3000個ぐらい頂点バッファ確保したらブルースクリーンになるな。
最初、なにが原因で落ちてるのかわからなかった。
0123名前は開発中のものです。2008/06/19(木) 19:31:15ID:rOBzS8e6
質問です。SDKは9.0c March2008
D3DPOOL_SYSTEMMEMのサーフェスをロックして書き換えて、
随時他サーフェスにUploadSurfaceしてるんですが、XPではまったく問題が無いのに
VistaだとたまにLockRect関数で処理が停止されます。
D3DLOCK_DONOTWAITを与えてやって、失敗時逃がすようにすると
今度は成功したときUnlockRectで停止されます。
これはどうすればいいんでしょうか?
0124名前は開発中のものです。2008/06/19(木) 21:21:53ID:J9NyTZGt
>>122
それはおかしくないか?
メモリ不足ならOUTOFMEMORYエラー返ってくるし。

DONOWAITってGPUが使用中のときはスルーするだけだから
そこで失敗してたらUnLock()しちゃ駄目だろ。

よほどの理由がない限りはサーフェイスロックしてCPUで書き換えなんて
しないでピクセルシェーダーで直接書いた方がいい。
0125名前は開発中のものです。2008/06/19(木) 22:36:10ID:jfby45iB
>>124
いや、メモリ不足はない。ちゃんとチェックは入れてるし。
ちなみにドライバはオメガドライバ。
普通のドライバだとスカイプが当たるので、オメガドライバを使ってるんだけどね。
確保する頂点バッファの数を減らしたら普通に動くようになった。
01261232008/06/19(木) 22:37:44ID:rOBzS8e6
>>124
テキストをGetGlyphOutlineで取得してセコセコSYSTEMMEMサーフェスに書いてるんですよ
もしかしたら別スレッドでUpdateSurfaceしてるのが原因とか?
0127名前は開発中のものです。2008/06/19(木) 22:53:09ID:J9NyTZGt
>>126
スレッド分けてるなら同期に関しては気を使わないと死亡だぞ。
GetGlyphOutline()なら最初からD3DXFont()使う方が速いし便利じゃね?とか思うけど。
あるいは利用する文字を事前に画像に全部展開しておくか。
01281232008/06/19(木) 23:41:05ID:rOBzS8e6
>>127
D3DXFontは60FPSだと重くて使い物にならないだろ
文章表示だから、最初にちょっと重い処理をしてあとはテクスチャから描画するだけ
一応クリティカルセクションで排他制御はしてるんだけどね
XPや2000で問題なくてVistaで動かないとか、どうしてもゲイツを疑ってしまう・・・
0129名前は開発中のものです。2008/06/19(木) 23:45:33ID:J9NyTZGt
>>128
GetGlyphOutline()を文字毎に呼んでわざわざサーフェイス転送する方が使い物にならないだろ・・・。
D3DXFont()は中である程度の文字はテクスチャにキャッシュ出来るようになってるぞ。
0130名前は開発中のものです。2008/06/20(金) 00:04:24ID:G3IoCWKi
>>129
そうなのか?昔20文字表示しただけでFPSがた落ちだったんだが
まあ他にも面倒なことをやってまで、サーフェス転送する必要があるんでこの方法にしてる
0131名前は開発中のものです。2008/06/20(金) 00:08:44ID:88LRPetr
>>128
俺も似たようなシステムでフォントを描画してる。
たしか、Vista でもそんなに遜色なく動いた気がする。
ちなみにシングルスレッドでやってる。
一回、シングルスレッドにして動かしてみたら?

>>129
キャッシュを作れば軽いよ。
うちは、キャッシュするフォントとは別に最初にから用意するフォントと
2つシステムを持ってて自動で判断して使い分けるようになってる。
キャッシュのヒット率を上げるような最適化はまだやってない。
0132名前は開発中のものです。2008/06/20(金) 00:08:49ID:3x+Mh2k+
文字描画なら事前に画像に展開して、それ利用して文字を描画する方法が最強。
コンシューマーでは当たり前の方法だけどWindowsだと意外とマイナー。

どんなものでも事前に作っておけるならそれが最速だし、
どうしても動的に作る必要があるならピクセルシェーダー使うかストリームアウト使う方がいい。
0133名前は開発中のものです。2008/06/20(金) 01:02:57ID:G3IoCWKi
>>131
とりあえずシングルスレッド仕様にしてみた
コードがすっきりしていい感じ。XPでは問題なく動作
Vistaは大学にしか無いから、明日試してみます
0134名前は開発中のものです。2008/06/20(金) 04:54:23ID:DQo2PM0/
>>132
Windowsのシステムフォントを画像に展開するのはライセンス的にまずくなかったか?
だから動的に描画してるんだと思ったが。

俺はFreeType使って描画してる。ノベルゲームでも1000字程度らしいから、文字を走査
したテーブルを作って、最初にまとめて生成してるよ。
後はテクスチャロックして適宜転送してる。
ビデオメモリにの容量に問題ないなら、全部のっけたほうがいいんだろうけどね。
0135名前は開発中のものです。2008/06/20(金) 07:31:33ID:6THOk7MT
実行時に展開するんじゃないかと
0136名前は開発中のものです。2008/06/20(金) 10:51:47ID:88LRPetr
展開するとか言ってる奴、チャットとかどうすんだよ。
0137名前は開発中のものです。2008/06/20(金) 12:49:44ID:LR2HafI7
GetGlyphOutlineはAAの品質を設定できるのが強みだけど、文字が必要以上に
ボケるのが嫌で俺は使ってない。(特に横線)
AA無しの横幅4倍で描画して、横だけ1/4に縮小が一番バランスがいいと思う。
01381332008/06/20(金) 17:20:12ID:G3IoCWKi
Vistaで問題なく動いた。とりあえず感謝です

>>136
チャットなんてそんなに難しい漢字は使わないから、
フォントイメージキャッシュをうまく作れば大丈夫だろ
俺はテクスチャサーフェスに文章を直接書き込んじゃうけどな
テキストボックスはD3DXFontで表示
0139名前は開発中のものです。2008/06/20(金) 18:36:40ID:yFi5+cKL
実行時にキャッシュするとなると、1文字あたり1秒かからないにしても
シフトJISの6000文字分をキャッシュするのに1時間以上待たされることになるから
現実的な方法ではないな。
0140名前は開発中のものです。2008/06/20(金) 19:57:23ID:88LRPetr
>>138
とりあえず良かったね。

いや、この辺りの実装は人によって違うだろうから、
まぁ、文字が表示できればそれで良いとは思うけどね。

ちなみに、すごーく前は俺はGDI描画用のビットマップを
CreateDIBSection で作ってそれに描いて、ロックしてから転送してた。
最適化矩形で転送してたけど、重かった。
0141名前は開発中のものです。2008/06/20(金) 19:59:38ID:88LRPetr
>>139
6000文字でもそんなにかかるわけ無い。

6000文字だとメモリが無駄な方が大きい。
サイズ違いのフォントを描画することも考えると、
動的なキャッシュが一番メリットあると思うけどなぁ。
■ このスレッドは過去ログ倉庫に格納されています