ページ 1 / 1
画面がちらつく
Posted: 2012年7月28日(土) 21:50
by ヒューガ
http://www1.axfc.net/uploader/Si/so/145546
上のファイルですが
ある程度飛び続けると空やモデルがちらつきます。
どうすればいいでしょう?
Re: 画面がちらつく
Posted: 2012年7月28日(土) 22:19
by softya(ソフト屋)
私のところでは何も起きません。
バグの追求をお願いする場合は、バグの再現方法を詳細に記載するか、何もしなくても必ずバグを再現するプログラムを添付して下さい。
ちなみに圧縮ファイルのdebug/ipchフォルダやacecombat DX.sdfは圧縮ファイルが巨大化するので不要です。
Re: 画面がちらつく
Posted: 2012年7月28日(土) 22:54
by ヒューガ
高度を上げて直進し続ければ発生すると思います。
スペックの問題でしょうか?
ノートpcでcorei5でメモリ4GBでグラボはオンボードです。
Re: 画面がちらつく
Posted: 2012年7月28日(土) 23:16
by softya(ソフト屋)
ヒューガ さんが書きました:高度を上げて直進し続ければ発生すると思います。
スペックの問題でしょうか?
ノートpcでcorei5でメモリ4GBでグラボはオンボードです。
プログラムが大きくてコメントも殆ど無いので調査は困難です。
勘だと背景との位置関係の問題では?
背景を自機と一緒に移動させれば問題は起きないとかも知れません。
Re: 画面がちらつく
Posted: 2012年7月28日(土) 23:40
by ヒューガ
空は自機と同じ座標に合わせています。
おそらくSetCameraNearFar関数でFarを100000と大きな数字にしているせいかもしれませんが、このぐらいにしないと思った通りに見えないので…
Re: 画面がちらつく
Posted: 2012年7月28日(土) 23:54
by softya(ソフト屋)
何らかの計算誤差は発生していると思います。
どんな飛行機系のゲームでも飛べる範囲は限界があるのは普通ですね。
飛行範囲を制限してはどうでしょうか?
それとSetCameraNearFarに関してはあまり適当にやるとZバッファの働きが悪くなるので近接したモデルに影響が出る場合があります。
空のモデル自体のscaleをいじって見るとか手は色々有る気がします。
点滅している時の空とカメラの位置関係も調べてみたほうが良いでしょう。
[追記]
忘れてました。
floatの有効精度は約7桁で実質6桁です。
10000000 + 1
など加減算は誤差に飲み込まれて計算されなくなるので、そういう所もないかチェックして下さい。
対処方法はdoubleにすることです。
あとdouble→float変換でも同じことが起こります。
10000001 とかは下の桁が誤差として消えます。
Re: 画面がちらつく
Posted: 2012年7月29日(日) 00:14
by ISLe
背景モデルの座標がオーバーフローして、クリップされたりされなかったりを繰り返しているのではないでしょうか。
自機を中心に固定して、周りの世界を動かすようにすると良いですよ。
宇宙モノとかで際限なく進める(※)のはそういう仕組みになってます。
※たいてい世界がループしてますけど。
Re: 画面がちらつく
Posted: 2012年7月30日(月) 23:37
by ヒューガ
とりあえず視野を元に戻しました。
しかしこれだとなんか物足りないというか……
ちらつきこそなくなりましたが
とりあえずこれでやってみます
Re: 画面がちらつく
Posted: 2012年7月30日(月) 23:40
by softya(ソフト屋)
ヒューガ さんが書きました:とりあえず視野を元に戻しました。
しかしこれだとなんか物足りないというか……
ちらつきこそなくなりましたが
とりあえずこれでやってみます
SetCameraNearFarは視野じゃないですよ。
直したポイントをちゃんと書いてくださいね。
Re: 画面がちらつく
Posted: 2012年8月01日(水) 09:59
by softya(ソフト屋)
対処を転記しておきます。
ヒューガ さんが書きました:画面のちらつきについては全てのモデルやベクトルを小さくすることによってSetCamerNearFarを使わずに済み解決しました。
お騒がせしました。
Re: 画面がちらつく
Posted: 2012年8月01日(水) 15:41
by ISLe
いずれオーバーフローするのは変わらないと思いますけど。
floatの精度は10進数でたかだか7桁程度しかないので、背景が遠くまで見えるように縮尺を落とすと、逆に細かい操作ができなくなります。
この手のゲームでは、遠くの敵になかなか照準が当たらなくなります、というか弾を当てられない場所ができます。
戦闘機なんでごまかす手はいろいろありますけど。