- 1 名前:名前は開発中のものです。 mailto:sage [2008/10/25(土) 17:37:53 ID:BCFbbKco]
- Cを習得した程度のスキルでも、
GUIのゲームを比較的容易に作成する事を可能にする、 「DXライブラリ」に関するスレッドです。 DXライブラリの詳細ついては homepage2.nifty.com/natupaji/DxLib/ を参照して頂きたい。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 過去スレ:DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/
- 113 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 23:41:52 ID:56rIt8Hu]
- ティアリングが嫌だから切り替え方式にしてるます。
最初はゲーム起動時に測って自動切換えにしてたけど それもやめて結局手動切り替えに……。
- 114 名前:名前は開発中のものです。 mailto:sage [2008/11/15(土) 23:43:35 ID:56rIt8Hu]
- 切り替えってのはリフレッシュレート依存方法と、タイマでウェイトかける方法の二つね。
移動距離算出方法はやった事ないです。
- 115 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 00:40:12 ID:H38ODQJJ]
- ティアリングとスピードは関係ないでしょう。
とりあえずDXライブラリを使うならScreenFlip()で垂直同期を待てば良いと思うよ。 スピードの話はまた別の話。 >>113 ゲーム起動時に何を測るの? それと、切り替える必要性が見えないんだけど・・・?
- 116 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 01:43:29 ID:Hwka3oLK]
- >>115
>ゲーム起動時に何を測るの? ScreenFlipを一秒間繰り返して、その回数で判断。 >>98で書いたけど、垂直同期信号待ちをしてるはずなのに ScreenFlipで待ってくれない場合があるから、 FPS値が異常に高かったらそうだと判断して タイマー値によるウェイトかけるようにしてた。 >それと、切り替える必要性が見えないんだけど・・・? それはどっちを基準にして? ScreenFlipを基本として考えるなら、リフレッシュレートが変更された場合や 上で書いた垂直同期信号待ちしてくれない環境の時に異状スピードになってしまう。 タイマ値でウェイトかける場合は、やっぱりティアリングが気になるし、 1フレームごとに点滅するエフェクトとかがきちんと点滅しなくなる。
- 117 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 02:40:28 ID:H38ODQJJ]
- >>116
えっと、だからね、ScreenFlipとティアリングは関係あるけど、 それらとウェイトは関係ないって事だよ。 ゲーム起動時にScreenFlipの待ち時間からリフレッシュレートを判断してるようだけど、 それも結局ScreenFlip基準でタイマー取る方式だよね。 てことは例えば60Hzを基準にウェイトをかけるって事だよね。 だとしたらはじめからリフレッシュレートのウェイトなんかに頼らずに、 マルチメディアタイマーででも1/60sを基準にコードを書けばいいでしょ? だから起動時に測る必要もないし、リフレッシュレートの変更やVsyncを待たない場合は考慮しなくていいの。 繰り返すけど、タイマーでウェイトかけてもScreenFlipを使うならティアリングはないよ。
- 118 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 03:40:07 ID:Hwka3oLK]
- 何か齟齬がある気がする。
タイマでウェイトかける場合は、ScreenFlipのVsync待ちはOFFにしてあるんだけど、 それでもティアリングは発生しない? んじゃ発生してる俺のプログラムは何か間違ってるのか。 理屈上、1/60sを基準にウェイトかけるようにすれば ゲームスピードは一定になるが、タイミング次第で ティアリングが発生しない状態か、 あるいはティアリングが発生し続ける状態が 維持されるものだと思っていたのだが。
- 119 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 04:22:31 ID:H38ODQJJ]
- Vsync待ち、かつ、タイマーで制御するんだよ。
これを前提に最初から読み返してみて。
- 120 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 14:59:43 ID:Yf+kFgNP]
- ScreenFlipもやって、1/60secも待って、ってやらないと一定にならないし、ちらつきも解消されないよ。
- 121 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 17:43:53 ID:fHnaEgZY]
- タイマー待ちを使うんならVsync待ち無しのScreenFlipじゃないと
ティアリングは発生しないけど動きが凄いガクつくぞ ADVみたいに動きの少ないゲームならそれでも良いと思うけど、 STGやACTでは見るに耐えない
- 122 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 18:33:07 ID:H38ODQJJ]
- 60Hzに合わせれば60Hzの環境なら結局タイマーでウェイトしないから問題ないよ。
75Hzの環境なら60fpsに制限されるから多少はガクつくけどこれはトレードだね。 ちなみに3Dモノとか海外のゲームはfpsを出来るだけあげて垂直同期しないっていうのが主流みたい。 >>121みたいにfps制限はするわ垂直同期しないわっていうのは愚の骨頂。 ティアリングするわfps制限されてるわでひどいもんですわ。
- 123 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 21:17:57 ID:gVsDrcFZ]
- >>102-103
ガッ
- 124 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 21:57:20 ID:fHnaEgZY]
- >>122
なんでそんなに相手を見下したような態度なの? >60Hzに合わせれば60Hzの環境なら結局タイマーでウェイトしないから問題ないよ。 それはわかってるよ だから最初にリフレッシュレート測って垂直同期主体にするかタイマー同期にするか判断するんでしょ? 121はあくまでfpsとリフレッシュレートが一致していない場合の話 >75Hzの環境なら60fpsに制限されるから多少はガクつくけどこれはトレードだね。 ここで122の言うとおり垂直同期とるかとらないかはプレイヤーの好みの問題 オプションで選択できるようにすべきだと思う >ちなみに3Dモノとか海外のゲームはfpsを出来るだけあげて垂直同期しないっていうのが主流みたい。 そうだね。3Dモノは可変fpsと相性良いよね。 >>121みたいにfps制限はするわ垂直同期しないわっていうのは愚の骨頂。 垂直同期をとらないことで手軽に入力に対するレイテンシを下げることができるし、 リプレイを取る目的でfpsを固定しなければならない場合もあるんだから、 短絡的に愚の骨頂というのはどうだろう 122的には60fps固定+垂直同期してない東方緋想天は愚の骨頂? 俺はそうは思わないけど・・・
- 125 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 22:50:57 ID:5RilDqvE]
- 2Dシューティングを過去いくつか作ってきましたが、
リプレイ周りの実装も含めて、やっぱりFPSは60に固定でロジックを組みますよ。 オプションで「Vsync待ちをするかタイマーか」を選択させてます。 124さんもリプレイの話をしているから、そういう前提で言ってるのだと思うのですが。
- 126 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 23:07:43 ID:xtMr6+ch]
- リプレイって別にFPS固定必要ないような
入力があったキーとその時の経過フレーム数があればいいんだし
- 127 名前:名前は開発中のものです。 mailto:sage [2008/11/16(日) 23:30:59 ID:0yDeWpwc]
- おまいら もちつけよ.
- 128 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 01:36:47 ID:GetktCW+]
- >>124
何そのゲーム。>東方なんたら 最悪だね〜。 >>126 だよねぇ。
- 129 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 03:32:51 ID:qWlXMT4E]
- なんだ釣りか
- 130 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 18:51:51 ID:TAngTg8T]
- なんだこんなすばらしいスレがあったのか>>1乙
- 131 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 21:49:06 ID:E1tboJG/]
- DXライブラリで作った横スクロールアクションのソースってどこかに転がってない?
- 132 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:00:58 ID:tSUha7RY]
- 転がってるって・・・
作者の好意で公開してるソースをそんな言い方するなよ
- 133 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 22:04:49 ID:Zhr1hzWJ]
- ニコニコで一時話題になった、しかけが外道なスーパーマリオもどきはソース公開してたと思う
- 134 名前:125 mailto:sage [2008/11/17(月) 22:57:25 ID:pxmPH9a8]
- >126
たしかにそうですね。 ただ、自分の場合は、FPSを固定すればあとはキー入力さえきちんと記録できていれば リフレッシュレートが違えどもリプレイがずれることがないのでそうしていました。
- 135 名前:名前は開発中のものです。 mailto:sage [2008/11/17(月) 23:31:08 ID:OriaVhLm]
- 移動量固定方式か、経過時間による移動量計算方式かで
やり方も違ってくるんじゃないかな。
- 136 名前:名前は開発中のものです。 mailto:sage [2008/11/18(火) 13:05:35 ID:FZcPiuDy]
- >>133
しょぼんのアクション だっけ? やっと1−1クリアだと思ったのに愕然とした記憶がある。
- 137 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 13:43:13 ID:xnzA6xl6]
- DirectXのバージョンを9に移行するらしいね
- 138 名前:名前は開発中のものです。 [2008/11/19(水) 14:54:42 ID:TpPgoKXn]
- >>133
あれはやばいです あれはほんとうに・・やばい・・。 この道10年のベテランですらあれを見ると悶絶して悶え死ぬレベル。 あのソースを読んだあの日、私は自分の人生について考えさせられました。
- 139 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 15:08:39 ID:lxkh5WN5]
- そんなにすばらしいのか
- 140 名前:名前は開発中のものです。 mailto:sage [2008/11/19(水) 15:11:10 ID:Lz0a0oQh]
- 思わず3回DLし直す位のレベル
- 141 名前:名前は開発中のものです。 [2008/11/19(水) 18:41:54 ID:TpPgoKXn]
- あれは伝説のソースですよ
- 142 名前:名前は開発中のものです。 mailto:sage [2008/11/20(木) 23:58:11 ID:UIc9LZep]
- DLしてみたが・・・凄まじいソースだな
- 143 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 00:08:16 ID:AZA6fSH/]
- 俺のソースも似たようなもんだなw
- 144 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 00:14:35 ID:IPu5qEL0]
- 汚いコード書ける奴って尊敬するわ
むしろ逆に頭良いと思う
- 145 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 00:46:35 ID:PFCyKir9]
- 部屋が汚くても気にしないやつがいるのと同じ
- 146 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 05:06:26 ID:0gMw7+uw]
- fatalita.sakura.ne.jp/Software/cuirpgfordq3.lzh
これもマジキチ
- 147 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 05:58:28 ID:VvYw+mZM]
- >>146
これはアイテム4つで実装力尽きるw 配列すら使ってないとかやべぇ でもスレチ
- 148 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 12:55:25 ID:3m8CIP+t]
- BASIC覚えたての頃、そんな風にGOTO文メインでテキストアドベンチャーゲームを作ったなあ…。
それにしてもその作者はDXライブラリ3Dの作者なの? なんか色々考えさせられるな…。
- 149 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 15:36:28 ID:ELcxKG7H]
- でもスレチ
- 150 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 19:40:33 ID:yD9XL+v+]
- 自分のスパゲティソースを晒す勇者はおらんのか・・
- 151 名前:名前は開発中のものです。 mailto:sage [2008/11/21(金) 21:42:08 ID:FU8hvFU5]
- さらしてどうすんのよw
- 152 名前:名前は開発中のものです。 mailto:sage [2008/11/22(土) 22:21:51 ID:j0m39ynA]
- タイピングゲーム作ってるけど疲れてきたぜ。
ゲーム一本完成させるって難しいな。
- 153 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 02:26:12 ID:YAgqgFQm]
- 完全体になる前にリリースすればいいじゃない(マリー
- 154 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 02:27:42 ID:Ef5lma7p]
- プログラム歴3ヶ月おれもタイピングゲーム作ってます
プログラム練習としても面白いジャンルのような気がします がんばりましょう
- 155 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 14:21:16 ID:bJorsnCE]
- >>153
俺知ってるよ そういうのをあじゃいるって言うんだよね
- 156 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 17:55:00 ID:pnQpCtQf]
- 画面全体をぼかしたいのですが、どうすればいいのでしょうか?
SaveDrawScreen()で画面全体を保存した後に、 その画像を加工して表示するという方法を試しましたが、遅くてとても使えませんでした。 ちなみに手順は 保存→加工→保存→表示です。 加工と二回目の保存の処理の間がとても遅かったです。 直接DXライブラリで描画してる画像をぼかせばもっと早くなると思うのですが、 DXライブラリで直接ぼかす方法がさっぱりわからりません。 どういう方法でぼかせれるのでしょうか?
- 157 名前:名前は開発中のものです。 mailto:sage [2008/11/23(日) 20:09:39 ID:YAgqgFQm]
- ブレンドモードを上手く使えばどうにかなるんじゃなかろうか。
昔、モーションブラーもどきを自分で作ったが細かいやり方は忘れた。
- 158 名前:名前は開発中のものです。 mailto:sage [2008/11/25(火) 00:31:59 ID:xYyBQpV1]
- >156
そのまま画像を描画 ↓ αブレンドを適当に128くらいに指定してxy数ドットずらして描画×数回… こんなのでどう?
- 159 名前:157 mailto:sage [2008/11/25(火) 20:03:29 ID:5UMAw8SP]
- >>158
ああ、そうそう。 そんな感じでできると思う。たぶん。 ずらし量やブレンド率でぼけ足上手いこと調整してどうにかする。 関数化できたら楽そうだ。
- 160 名前:名前は開発中のものです。 mailto:sage [2008/11/25(火) 22:23:11 ID:VmASE6nW]
- >>157-159
いろいろとありがとうございます。 アドバイスのおかげで、それらしいのはできました。 縦には動かしていないのですが、とりあえずそれっぽい動作はします。 ソースは以下の通りです。 private void GraphOff(int dot,int graphHandle) { for (int i = 0; i < 640 / dot; i++) { DrawGraph(i * dot - 640, 0, graphHandle, 0); DrawGraph(640 - i * dot, 0, graphHandle, 0); } } これでまた問題が出たのですが、この処理非常に重いです。 FPS30固定にしているのですがこれをするとFPS10〜15になります。 軽くする良い方法は何かないでしょうか?
- 161 名前:名前は開発中のものです。 mailto:sage [2008/11/25(火) 22:39:54 ID:MBrRa9Zc]
- 640 / dot ←この計算をfor文の前にやって適当な変数に代入しておく
- 162 名前:名前は開発中のものです。 mailto:sage [2008/11/25(火) 23:02:53 ID:EDWbdjkC]
- >>160
i < 640/dot を i < 160/dot くらいにまで下げてみる ぼかすのがゲーム上そんなに大事じゃなかったら このくらいで妥協するのが一番
- 163 名前:157 mailto:sage [2008/11/26(水) 02:18:18 ID:eTjv2Xnv]
- >>160
そんなに回数要る? dotの値がいくら位で何回位描画しているのかとか、コードの意図とかちょっとわからんので ↓とどっちのコードの方が性能良いのかよくわからんけど… int times = 4;//描画回数:4〜16推奨 int gap = 2;//ギャップ:1〜4推奨。残像拳のような効果を狙うなら大き目に。 SetDrawBlendMode( DX_BLENDMODE_ALPHA , 32 ) ;//描画回数×ブレンド率=128〜256推奨 for (int i = 0; i < times; i++){ DrawGraph( i*gap - times*gap, 0, GHandle, 0); DrawGraph( times*gap - i*gap, 0, GHandle, 0); }
- 164 名前:名前は開発中のものです。 mailto:sage [2008/11/26(水) 04:53:23 ID:mqCcsZAV]
- >>160
本当に速度が必要で、それなりのクオリティーが欲しいなら LoadSoftImage関数とLoadSoftImageToMem関数を使うといいかもしれない。 自分は近頃、DXライブラリまったく触ってなかったから、どんなもんか わからんが、説明を読む限りではこっちの関数で処理して GraphHandleをつけて、表画させる方が高速みたいだし・・・・・
- 165 名前:名前は開発中のものです。 [2008/11/27(木) 05:33:03 ID:9lHdy+ss]
- DXライブラリとは直接関係ないのですが、
DXライブラリとかの関数を変な使い方すると、めっちゃ重くなったりして(コンパイルエラーが出るわけではない)、 上手く扱わないとたとえ数百行のプログラムでさえ上手く動かないのに 市販されてる3Dゲームとかだとそれこそ想像もつかない量のプログラム書いてると思うんですが それを全く重くならないように作るというのはまさに神の所業としか思えないんですが・・・ やはり職人的なひとはそれほどすごいってことでしょうか? それとも単にまだ自分が未熟なだけでしょうか? なんか抽象的な質問ですみません。
- 166 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 07:22:55 ID:UFJsiMGy]
- >>165
普通に使っている分には問題ないと思うけど… コード量も関係ないし。 メインのループ(秒間30〜60回くらい回しているとこ)の外で1回やれば済む処理を ループの中で毎回やってたりしてない? 例えばグラフィックハンドルへの画像の読み込みを毎回やっているとか。
- 167 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 12:05:54 ID:tLRoJzh6]
- DXライブラリもよっぽど変な使い方しない限りめっちゃ重くはならんでしょ。
そりゃまぁPCの性能にもよるけど。 市販されてる3Dゲームとかは、俺はヘボプログラマだからそれこそ神の領域にしか思えないけど 同じ市販ゲームでも、すごいグラフィックなのに軽快なのとか、やったらもっさりして重いのとかあるから そこらへんはプログラマの腕次第でしょ。 凄腕のプログラマは極限まで無駄な処理を省いてるんだと思う。
- 168 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 17:02:45 ID:HwZNU9zJ]
- メモリの1バイトは血の一滴ですね
- 169 名前:名前は開発中のものです。 [2008/11/27(木) 18:56:41 ID:9lHdy+ss]
- >>166-167
なるほどサンクス・・・ 確かに無駄に繰り返してるかもしれない・・・。
- 170 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 20:46:39 ID:GnzSYpCC]
- フォントのサイズ変更とかと勝手に予想
- 171 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 22:41:46 ID:LOD/UyCK]
- >>161-164
ありがとうございます。 回数がご指摘の通り多すぎました。 >>157のコードと併用して、思っていたぼかしができました。 コードは私の作成したコードと>>157のコードを関数化しただけなので省略させていただきます。
- 172 名前:名前は開発中のものです。 mailto:sage [2008/11/27(木) 22:48:28 ID:tLRoJzh6]
- フォントのサイズ変更はしゃれにならんほど遅いからな……。
別フォント用意すりゃいいことだが。
- 173 名前:名前は開発中のものです。 [2008/11/28(金) 05:15:28 ID:10isJ4oY]
- SetWaitVSyncFlag(FALSE);
にしたらドラゴンボールの世界になってワロタ
- 174 名前:名前は開発中のものです。 mailto:sage [2008/11/29(土) 16:25:44 ID:BtMciNRd]
- PlayMusic関数で再生位置の指定ってできないの?
- 175 名前:名前は開発中のものです。 [2008/11/29(土) 22:48:46 ID:kaHILOZB]
- >>101
いますぐ昔の再放送の刑事ドラマやドラマの 事務所シーンを見るんだ!!! パソコンのディスプレイあるだろアレみるとわかりやすい
- 176 名前:名前は開発中のものです。 mailto:sage [2008/11/30(日) 02:55:10 ID:Kx1+nHAm]
- >>175
あれ今見るとなんでそう見えるか理解出来るな タイヤが逆回転して見えるのとかも
- 177 名前:名前は開発中のものです。 [2008/12/01(月) 09:18:57 ID:PQmt2oZj]
- 3Dでゼルダみたいなゲーム作りたいんだけど
DXライブラリ(3D)で完璧に作ったのと DirectXで完璧に作ったのだったら動きのサクサクさにどれくらい差が出るのかな? PCの性能は結構良いのでそれは関係なく 個人的にはマリオ64くらいのクオリティーは出したいと思ってるんだけど 始めての大型ゲームなんで全く想像付かない
- 178 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 09:51:01 ID:Mqk5OkvC]
- 3Dのゼルダってまんま64とGCのゼルダじゃね?
- 179 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 10:23:13 ID:PQmt2oZj]
- はい
- 180 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 16:53:55 ID:B+fc1nCX]
- DirectXで作るって言ったってどうせ自分でラッピングするんだから一緒だと思うぞ
- 181 名前:名前は開発中のものです。 mailto:sage [2008/12/01(月) 16:57:45 ID:Mqk5OkvC]
- >>177
そのプロセッサ専用のライブラリを熟知してれば サクサク動くゲームになる 例えばPS2ならEEとかのベクトル計算のためのライブラリの仕様とか windowsマシンにはそんな計算機能はデフォルトじゃついてないから どうしてもグラボ依存になる
- 182 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 00:02:20 ID:zbFv8Mtr]
- int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpc, int nC){
ChangeWindowMode(TRUE); SetDrawScreen(DX_SCREEN_BACK); while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0){ ClsDrawScreen(); 〜〜 ScreenFlip(); } } ↑こう書いたとき、〜〜 の部分の処理が毎回変わるモノだった場合でも、よほど〜〜の処理が長くならない限り、 ScreenFlip()があることによって、画面に出力される周期は〜〜の処理時間によらない、と考えていいんでしょうか? なんか説明下手ですみません・・・。 たとえば、指数関数的に動く物体を作りたいとして、 〜〜の部分を「毎回n=n+1して、x^nの位置に画像を出力」という内容にしたとした場合、 ループが来るたびにnが増えるからx^nの計算の処理が多少だんだん増えていくと思うのですが、 もしその処理時間も画面出力に影響してしまったら、動きが時間の正確な指数関数にならないと思うのですが、 『ScreenFlip()によって、「処理が終わっても、規定時間δtが来るまでは画面出力しない」という仕組みが加わってるので、 処理時間に影響せず一定時間ごとに画面出力される。 ただし、もちろん 処理時間の方がδtを超えてしまったら、重くなるという別の影響は出てくる。』 というものだと解釈していいのでしょうか? (すみません。アク禁中の代レスなので、返事できないかもしれません。)
- 183 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 08:48:55 ID:jLo5RDUc]
- どうでもいいがProcessMessage()の場所が俺の好みじゃなかった。
本文は読んでいない。
- 184 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 08:53:50 ID:l3NK/S0H]
- SetWaitVSyncFlagがFALSEで無い限りは
- 185 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 09:50:01 ID:ptyOGcVX]
- リフレッシュレートに依存する。
- 186 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 21:13:42 ID:xSROB0kK]
- x^nの計算なんか描画処理に比べたらほんの一瞬
- 187 名前:名前は開発中のものです。 mailto:sage [2008/12/02(火) 22:13:19 ID:g62jpxUX]
- そういやCを独学でやってて最初に詰まったのがべき乗計算だったなw
- 188 名前:名前は開発中のものです。 [2008/12/03(水) 05:14:23 ID:Ts8WjI0J]
- >>153
#include <stdio.h> #include <windows.h> void main (){ int cell=0,jinzo18=2,jinzo17=2,tensinhan=25,seimeiryoku=1; int hikinobasi=0; cell+=jinzo17; for(hikinobasi=0;hikinobasi<30;hikinobasi++){printf("おお\n"); SleepEx(200,TRUE);} printf("天津飯「まずい17号を吸収しやがった・・・チャオズ俺は死ぬかも知れない\n");SleepEx(2000,TRUE); printf("セル「天津飯!!雑魚が何をするつもりだ!」\n");SleepEx(4000,TRUE); printf("天津飯「新気功砲!!ハー」\n");SleepEx(200,TRUE); printf("セル「(゚Д゚)ぬお!\n");SleepEx(200,TRUE); while(tensinhan>0){ printf("セル「<`Д´>おのれー」\n");SleepEx(200,TRUE); printf("天津飯「(; ゚Д゚)ハァー!」\n");SleepEx(500,TRUE); tensinhan-=seimeiryoku;} printf("天津飯「化け物め・・・・うう・・・・」\n");SleepEx(5000,TRUE); printf("セル「むううう」\n");SleepEx(1000,TRUE); printf("セル「こんな雑魚に足止め食らうとは」\n");SleepEx(4000,TRUE); cell=jinzo17+jinzo18; for(hikinobasi=0;hikinobasi<100;hikinobasi++){printf("おお\n"); SleepEx(50,TRUE);} printf("完全体セル「すばらしい力だ 諸君!!」\n"); SleepEx(10000,TRUE); }
- 189 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 05:38:32 ID:ecRDRm37]
- 同一内容の文字列を毎フレーム表示する処理があり、
空のサーフェスを作成 → 一旦バックバッファに文字列を描画 → バックバッファから空のサーフェスに文字列の画像を取得 こうして予め文字列を描画しておいたサーフェスから 毎回メイン処理でDrawGraphしているのですが、どうもスッキリしません。 しかもGetDrawScreenGraphの説明にもある通り透過色が使用出来ません。 DXライブラリでは作成したサーフェスに直接描画出来ないのでしょうか? やりたい事は「同じ文字列を毎フレーム描画する処理を軽くしたい」だけなのですが、 文字グラフィックファイルを用意することは出来れば避けたいので、良い方法があったら教えて下さい1
- 190 名前:189 mailto:sage [2008/12/03(水) 05:45:19 ID:ecRDRm37]
- 無駄に長くて分かり難くなってしまいました。
(例えば説明文等の)同一の文字列を毎フレーム描画する処理を軽くしたいが 文字グラフィックファイルを用意する以外で良い方法があったら誰か教えて下さいです。
- 191 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 09:09:23 ID:Zrkeui/r]
- DrawStringで十分軽いと思う
フォントハンドルを毎回読み込んだりしていない?
- 192 名前:189 mailto:sage [2008/12/03(水) 17:18:45 ID:ecRDRm37]
- >>191
お返事遅くなって申し訳ありません。 当方の環境ではDrawStringでやった場合のFPSが30くらいでDrawGraphにすると60になりました。 DirectX自体、文字描画にGDIを使っているのでビデオカードで処理できるBitBltの方が高速だと思っていました。数年前の知識ですが。。 低スペックでも快適に動くように作りたいので、DrawStringは極力使いたくないです。
- 193 名前:189 mailto:sage [2008/12/03(水) 17:29:14 ID:ecRDRm37]
- フォントの変更は行っていないので、フォントハンドルは使用していないです。
- 194 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 18:07:17 ID:o+fnXJLe]
- そんなにたくさんの文字を同時に表示してるのかな?
それともPC環境が悪すぎる? 俺普通にDrawString使ってるけど別に遅くなった事ないよ? 普通に60FPS出てる。古いノートパソコンで。 最高でまぁ10行程度の表示しかしてないけど。
- 195 名前:名前は開発中のものです。 [2008/12/03(水) 18:30:58 ID:JlppSG1I]
- いやそれじゃ全くテストになってないから。
192の知識通り、今も文字列表示は遅いよ。 189の方法が適切だと思うし、他に方法を提示できないのは申し訳ないけど、 少なくとも文字列表示が遅いって前提でレスされると無駄だと思ったので口を出してみた。
- 196 名前:名前は開発中のものです。 [2008/12/03(水) 18:37:18 ID:JlppSG1I]
- ×少なくとも文字列表示が遅いって前提でレスされると無駄だと
○少なくとも文字列表示が遅いって前提を否定するレスは無駄だと
- 197 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 19:17:52 ID:o+fnXJLe]
- 俺の事?
別にテストしたわけじゃなくて、普通に使ってるだけなんだが。 文字列表示が遅いってのが前提なら、そもそもグラフィック表示だって遅いだろ。 グラフィック表示が遅いから他の方法はありますか? って質問があったとしたら まず現在どういう環境でどれだけのグラフィックをどういう方法で表示させてるのか教えろってのは普通の流れだろ? そこをかっとばしてグラフィック表示処理そのものを早くする方法を考えるのは無駄な話だ。
- 198 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 19:27:15 ID:zxrZF3eH]
- 確かに
今与えられた情報だけではなんともいえんな
- 199 名前:名前は開発中のものです。 mailto:sage [2008/12/03(水) 19:41:02 ID:RJPTfL79]
- 文字列の長さ、量がまずわからない。
「フォントの変更は行っていない」というのが、フォントの大きさやアンチエイリアス有無の変更は行っているかもしれないとも読める。
- 200 名前:名前は開発中のものです。 [2008/12/04(木) 00:31:01 ID:jlPFeEOB]
- >>197
文字列表示はグラフィック表示より遅いって常識知らないの? そこは議論の余地なしだから言ったまで。 それと、テストじゃないなら>>194の報告は不適切。 まあ上記の前提を知らなかった故だからしかたないと言えばしかたないが、ややこしくなるのでなかったほうがよかったな。 情報は少ないが、前提を知っているば容易に共感できるし、解決方法を知っている人ならこの情報量でも回答できるかもしれない。
- 201 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 00:33:46 ID:GF73/yq8]
- >>197
>文字列表示が遅いってのが前提なら、そもそもグラフィック表示だって遅いだろ。 (;^ω^)
- 202 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 02:05:10 ID:z7drhJqc]
- 何人か偉そうにレスしてるけど、誰もライブラリのソース見てないのか?
DXライブラリは文字を描画する前にテクスチャにキャッシュしてるから 同じ文字なら2回目以降はほぼDrawGraphと同じコストで処理は完了する キャッシュ用のテクスチャは512x512だから画面一杯に異なった文字を 描画するくらいしない限りは文字列描画特有の遅さは発生しないぞ まあ、毎フレームキャッシュに無い文字を描画したら一般に言うところの 「文字列表示が遅い」ってのに当てはまるけど
- 203 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 09:46:46 ID:ggjOtlxc]
- 良スレage
みなぎってきた、学校でゲーム作ってくる
- 204 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 10:33:56 ID:763fKCgi]
- >>200
何を言ってるんだ君は。 60FPSで動いてるゲームに、一回のDrawString処理を追加しただけで30FPSにまで落ちたりするか? 普通はしないだろ? じゃあどういう処理にしてるんだ? っつーレベルの話だぞ? 192が出してる情報はその程度って事。
- 205 名前:名前は開発中のものです。 mailto:sage [2008/12/04(木) 12:47:01 ID:GF73/yq8]
- >>204
>>202 分からない(・∀・)カエレ!!
- 206 名前:名前は開発中のものです。 mailto:sage [2008/12/05(金) 18:06:46 ID:YY5q+8z/]
- ソフトウェア描画モードと言う物があるらしいのですが、
どれのことなのでしょうか? 一部のPCだと動かなかったりする時にこれを使えばいいらしいのですが……。 リファレンスを見た限りそれっぽいのがありませんでした。
- 207 名前:名前は開発中のものです。 mailto:sage [2008/12/05(金) 18:19:39 ID:MN0oAg79]
- この辺をどうぞ。
ttp://www.dkut.flnet.org/dxlibwiki/?3D%B5%A1%C7%BD%A4%F2%BB%C8%A4%A6%A4%AB%A4%C9%A4%A6%A4%AB%A4%F2%A5%E6%A1%BC%A5%B6%A1%BC%A4%CB%C1%AA%C2%F2%A4%B5%A4%BB%A4%EB
- 208 名前:名前は開発中のものです。 mailto:sage [2008/12/05(金) 20:49:20 ID:YY5q+8z/]
- >>207
ありがとうございます。 SetScreenMemToVramFlag( FALSE ); と、 SetUse3DFlag( FALSE ); を使ったらよさそうなのでこの二つを使ってみようと思います。
- 209 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 03:56:27 ID:5bnbt+Lt]
- >>204
垂直同期を使って処理していれば僅かな処理の遅さでFPSは半分になることがある そしてGDIは遅い >>189はDrawStringを使用せずに同等の文字描画処理をする方法を模索しているであって デバッグをしてくれと言っているわけじゃないんだから君がムキになるのは頓珍漢な話 俺を含め解決策が分からない初心者が回答することが間違い
- 210 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 04:17:22 ID:MshHJhkd]
- 俺もよくわからないけど、>>189は
>DXライブラリでは作成したサーフェスに直接描画出来ないのでしょうか? と明確に聞いてるぞ。 それを初心者が関係ない知ったか話をしてるとしか見えない。 「俺は平気だよ?」とか言う話もいらないと思うww >>202もヒントになると思うけど多分新しい文字列を頻繁に表示しようとしてるんじゃないかな。 毎フレーム更新される数値を表示するって事も多いと思うし。
- 211 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 06:11:31 ID:VA5mVjgv]
- ファイナルファンタジーの裏ワザででてくる
数字ゲームとかあれ作ると面白そう
- 212 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 09:55:12 ID:DCsCuBVu]
- ブラックジャックといいたまへ
- 213 名前:名前は開発中のものです。 mailto:sage [2008/12/06(土) 11:21:34 ID:gOAp6PdO]
- >>189は「同じ文字列」って書いてるじゃないか。
まあ任意のオフスクリーンバッファに描いてそれを転送したい、というのはわかるが できる機能を追加するかDXライブラリをやめるしかないのでは。
|

|