[過去ログ] Delphiゲームプログラミング相談室 (976レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
50
(3): 名前は開発中のものです。 [] 02/01/15 22:00 ID:no/G6LIu(1) AAS
ゲームを作ってみようと思って最近Delphi入手してプログラムの勉強を始め、
とりあえず画面にスプライトをたくさん表示してみたりしてるとこなんですが
どうにも画面のちらつきが気になってしまう。
自分の持ってる知識では
1.裏バッファに描画。
2.V-ブランクを待つ。
3.表バッファと裏バッファの入れ替え(ん?考えてみたらフルスクリーンじゃなきゃダメなのかな?だと裏→表バッファへコピーかな)
って感じでやれば良いと思うんですが、
V-ブランクのタイミングを調べる関数がどうしても見つかりません。
そもそもDelphiにはそんな関数は存在しないんでしょうか?
よく知らないんだがWIN32APIってのを使わないといけないのだろうか。
51
(3): 名前は開発中のものです。 [] 02/01/15 22:08 ID:aT6JIdrh(1) AAS
>>50
外部リンク[htm]:home4.highway.ne.jp
ここのサンプル見てみた?
52: 50 [] 02/01/15 23:50 ID:Ix5dcxBu(1) AAS
>>51
え〜と、そのサンプルは見てみましたが、
Vブランクのチェックとか裏バッファ使うとかやってませんし,残念ながら画面もちらつきまくってます。

ちょっと話がずれますが
サンプルでBitbltって関数を使ってますが、これはWin32APIの関数なのかな?
自作のコードではCanvas.Transparent:=TrueにしてCanvas.Draw()でスプライトを表示してました。
多分、BitBltを使うほうが速いのか? これから処理メーターでも作って比較してみます。

あぁ、でも処理メーター作るのには時間を計る関数を調べなきゃならないなぁ。
Delphiのヘルプって使いずらくてしんどいです。
Delphi6Personalのダウンロード版をってるんですがパッケージ版についてる紙のマニュアルは見やすいんですかね?
見やすいのなら買ってみようと思います。
55: 50 [sage] 02/01/16 01:30 ID:??? AAS
>>53
53(1): 名前は開発中のものです。 [sage] 02/01/15 23:57 ID:??? AAS
バックバッファとしてTImageを用意してそこに描画、そこから画面全体(もしくは更新部分のみ)
を表にBitBlt。
それで描画が遅くて耐えられないようだったら他の方法を考えるのでいいかと。
BitBltはWin32APIです。

パッケージ版はどうかな。買うほどではないと聞きますが。
ヘルプは慣れです^^;
パッケージ版はいまいちですか。その分のお金をDelphiなりWin32Apiの解説本に使ったほうが良さそうですね。

>>54
54(1): 名前は開発中のものです。 [sage] 02/01/16 00:04 ID:??? AAS
外部リンク[html]:www.osk.3web.ne.jp
ここにもあるように、VSYNC待ちはいろいろと面倒です。。
(ちなみにVSYNCを待って転送するAPIはDirectXのものしか知りません。
通常のWin32 GDIにあるんでしょうかね?)

その前に別の方法で高速化するのがいいかと。
すごいシビアならばDirectDrawつかわにゃなりませんし。
紹介のページ見てみました。そうか、PCだとコンシューマーと違って環境ごとにリフレッシュレートが違うって事が頭から抜けてました。
大昔、ゲームメーカーにいた時にプログラマーさんから教えてもらった知識が頭にあって、
Vsyncに同期を取って描画、ウェイト処理をするのが当たり前だと考えてました。
んー。結局、ちらつきのまったく無い画面、スムーズなスクロール等を実現したければ
フルスクリーンにして、リフレッシュレートもこちらから指定しないと難しいみたいですね。
で、そのためにはDirectDrawを覚える、と。

今作ってるゲームは練習用ですし、ちらつきは我慢してとりあえず完成させてみます。
DirectX以前に勉強しなきゃならないことは、いっぱいありますし。

レスくださった方々、どうもありがとうございます。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.045s