Re: DIBやDirectXについて ( No.14 ) |
- 名前:ギウ 日時:2019/05/31 00:24
>管理人様
追加で質問です。
この関数ですが、
SetUserScreenImage(vram_map16[page], DX_USER_SCREEN_PIXEL_FORMAT_R5G6B5);
Flip後に毎回実行して、表示するメモリを切り替えても問題ないでしょうか。(一応、実行してみた感じでは大丈夫そうでしたけど)
やりたいことは、
画面用のメモリマップを表と裏の2つ持っておき、
メインスレッドでFlip中に、別スレッドで次の描画を開始する感じです。
(次のFlip直前に、SetUserScreenImageで描画するマップを切り替える)
これが可能なら1000us以上速くできそうなので。
念のため、ご確認お願いいたします。
|
Re: DIBやDirectXについて ( No.15 ) |
- 名前:管理人 日時:2019/05/31 00:56
> この関数ですが、
> SetUserScreenImage(vram_map16[page], DX_USER_SCREEN_PIXEL_FORMAT_R5G6B5);
> Flip後に毎回実行して、表示するメモリを切り替えても問題ないでしょうか。(一応、実行してみた感じでは大丈夫そうでしたけど)
はい、問題ありません
ScreenFlip から出た時点でテクスチャへの転送は終わっていますので、SetUserScreenImage 内部で書き換えられる
ポインタ変数のアドレスが変化しても問題ないので…
> やりたいことは、
> 画面用のメモリマップを表と裏の2つ持っておき、
> メインスレッドで、表マップをSetUserScreenImageに設定してFlip開始したら、直ぐに別スレッドで裏マップにゲームの絵を描き始める。
> ゲームの描画が終わったあと、メインのスレッドで裏マップをSetUserScreenImageに設定してFlip・・・
> を繰り返す感じです。
>
> これが可能なら1000us以上速くできそうなので。
なるほど、そのような方法が…1ms以上は凄いですね
そういえば、昔ソフトウェアレンダリングの高速化で『2コア使って画面の描画を半分づつ(奇数ラインをコア0、偶数ラインをコア1)担当したら描画速度2倍…とはいかなくとも
それなりに高速化できるのでは?』などと考えたことがあります、グラフィックスAPIを使うのと異なって色々工夫の余地があるのが良いですね…
|
Re: DIBやDirectXについて ( No.16 ) |
- 名前:ギウ(解決) 日時:2019/05/31 06:36
>管理人様
了解です! 良かったです。
>なるほど、そのような方法が…1ms以上は凄いですね
Android版は、960x540の背景画像を転送するだけでも1ms前後かかってるので、一番大きいのはそれですね。
あと、メインの矩形以外の部分を、1フレーム遅れになりますが先に描いておこうかなと。
>そういえば、昔ソフトウェアレンダリングの高速化で『2コア使って画面の描画を半分づつ(奇数ラインをコア0、偶数ラインをコア1)
お! それと似たことやってますよ!
今作ってるゲームは縦に区切りやすいので、3コア使って画面を縦に3分割して描画してます。
>グラフィックスAPIを使うのと異なって色々工夫の余地があるのが良いですね…
ですね。
プログラム次第で劇的に高速化できたりするんで楽しいです^^
|
Re: DIBやDirectXについて ( No.17 ) |
- 名前:ギウ(解決) 日時:2019/05/31 09:11
(追伸:結果報告)
やってみましたが、処理は上手く行ってるんですけど、速度はほとんど変わりませんでした。。残念。
たぶん、キャッシュとかスレッドの待ち時間とかいろいろ関係してるんでしょうけど。
あと、スレッド使い過ぎなのかもw
|
Re: DIBやDirectXについて ( No.18 ) |
- 名前:管理人(解決) 日時:2019/06/02 03:59
ご返答ありがとうございます
> お! それと似たことやってますよ!
> 今作ってるゲームは縦に区切りやすいので、3コア使って画面を縦に3分割して描画してます。
なんと、既に分割描画を実践されていたとは…!
> やってみましたが、処理は上手く行ってるんですけど、速度はほとんど変わりませんでした。。残念。
> たぶん、キャッシュとかスレッドの待ち時間とかいろいろ関係してるんでしょうけど。
> あと、スレッド使い過ぎなのかもw
残念、効果なしでしたか…
書き込みアクセスのメモリ領域が近すぎると書き込みキャッシュが衝突してストール…とかですかね
お試しいただきありがとうございます m(_ _)m
|
Re: DIBやDirectXについて ( No.19 ) |
- 名前:ギウ 日時:2019/06/04 07:43
>書き込みアクセスのメモリ領域が近すぎると書き込みキャッシュが衝突してストール…とかですかね
こういうのが関係してるのかもですが、
最新のAndroid版でタイトル画面だけを表示した時の速度が安定しません。
描画と関係ないとこを触ってビルドしなおすと、1/2くらいの確率で、
8msだったり、5msだったりと、3msくらいの差が出ます。
8msのビルド状態でゲームを閉じて、ゲームを再起動しても8msになり、
5msのビルド状態でも同じく5msになります。
以前からあったのか、最新版だけなのかは分からないですが、一応ご報告ということで。
|
Re: DIBやDirectXについて ( No.20 ) |
- 名前:管理人 日時:2019/06/05 23:16
> 8msのビルド状態でゲームを閉じて、ゲームを再起動しても8msになり、
> 5msのビルド状態でも同じく5msになります。
>
> 以前からあったのか、最新版だけなのかは分からないですが、一応ご報告ということで。
私の環境では常に3ms程度の揺らぎがありますが、安定して3ms遅かったり速かったりということは無いですね…
テクスチャへの画像イメージの転送に掛かる時間が一定ではないのではないかと推測していますが…
( OpenGL 内部でメモリを確保して使用してその後解放していると思うので、その時の空きメモリの断片化状況などで
処理に掛かる時間が変化しているのではないか?等 )
|
Re: DIBやDirectXについて ( No.21 ) |
- 名前:ギウ(解決) 日時:2019/06/06 06:21
了解です。では気にしないのが良さそうですね。
あ、揺らぎについては、100フレーム分の平均値を表示してるので、ある程度まとまってくれる感じです。
|
Re: DIBやDirectXについて ( No.22 ) |
- 名前:ギウ 日時:2019/06/11 23:56
新関数のR5G6B5のPC版で、画面が真っ暗で遊べないとの報告がありました。
Windowsは7(64bit)とのことです。
何かわかるでしょうか。
|
Re: DIBやDirectXについて ( No.23 ) |
- 名前:ギウ 日時:2019/06/12 00:13
一先ず、以前の MakeX1R5G5B5ColorSoftImage で実行確認をしてもらい中です。(返信来たら追記します)
|
Re: DIBやDirectXについて ( No.24 ) |
- 名前:管理人 日時:2019/06/12 23:36
> 新関数のR5G6B5のPC版で、画面が真っ暗で遊べないとの報告がありました。
> Windowsは7(64bit)とのことです。
おぉ…そうですか…すみません
真っ暗になってしまった際のログファイル( Log.txt )を頂くことは可能でしょうか?
|
Re: DIBやDirectXについて ( No.25 ) |
- 名前:ギウ 日時:2019/06/12 23:39
>管理人様
MakeX1R5G5B5ColorSoftImage の方は正常に表示されたとのことです!
>真っ暗になってしまった際のログファイル( Log.txt )を頂くことは可能でしょうか?
了解です。確認してみます!
|
Re: DIBやDirectXについて ( No.26 ) |
- 名前:ギウ 日時:2019/06/13 23:18
Log出力するようにしたのを渡したんですが、Logが出ないらしいです。(私の方では出てるんですが)
なのでフォルダでF5を押してみてとか、DirectXのバージョンの確認をしてもらってます。
あと、見た目が黒いだけで、音再生やゲームの操作はできてるようです。
|
Re: DIBやDirectXについて ( No.27 ) |
- 名前:管理人 日時:2019/06/14 00:18
|
Re: DIBやDirectXについて ( No.28 ) |
- 名前:ギウ 日時:2019/06/14 08:04
>管理人様
ありがとうございます!
なるほど、確かに古いPC使ってそうなので、その可能性有りです。
最新版を取得して、R5G6B5ではなく、X1R5G5B5用の新関数版を送っておきました。(返信きましたらまたご連絡します)
※逆に、X1R5G5B5に対応してない場合は、R5G6B5になりますよね?
私のPCだと、555でも565でも新関数の速度は変わらないので、
予想としては、最近のPCは555も565も対応していて、速度もほとんど変わらないのかなと。
で、ゲーム的にはX1R5G5B5の方がメリットがあるので、PC側はX1R5G5B5で行くことにしました。
|
Re: DIBやDirectXについて ( No.29 ) |
- 名前:ギウ 日時:2019/06/15 01:18
ということで、X1R5G5B5版は問題なく動いたとのことです!
|
Re: DIBやDirectXについて ( No.30 ) |
- 名前:管理人 日時:2019/06/16 03:07
 |
Re: DIBやDirectXについて ( No.31 ) |
- 名前:ギウ 日時:2019/06/16 08:01
>管理人様
おお、最新版ありがとうございます!
DLしました。また確認してもらいます!
>No.27 の修正版を使用されたバージョンで正常に動作したということでしょうか?
はい、そのバージョンです。
DirectXは11とのことでした。
ただ、速度を計ってもらったところ、
タイトル 8000
戦闘中 13000(=ゲーム部分が5msくらい)
で、私のPCの場合は、
タイトル 1500
戦闘中 6500(=ゲーム部分が5msくらい)
と、CPU速度は変わらないのにVRAMへの転送が遅いので、
X1R5G5B5では表示されず、A8B8G8R8(?)で表示されてるのかもですね。
No.30のバージョンなら、A1R5G5B5 で表示されてもっと速くなるかもという感じでしょうか。
返信きたらまた書き込みます!
|
Re: DIBやDirectXについて ( No.32 ) |
- 名前:管理人 日時:2019/06/16 15:45
> >No.27 の修正版を使用されたバージョンで正常に動作したということでしょうか?
>
> はい、そのバージョンです。
> DirectXは11とのことでした。
おお、ひとまず今回の対策が正常に機能したようで何よりです
> No.30のバージョンなら、A1R5G5B5 で表示されてもっと速くなるかもという感じでしょうか。
いえ、Direct3D 11 は RGB555 系は A1R5G5B5 しか無いので、A1R5G5B5 に対応していない場合は
No.30 の表の通り次は R5G6B5 が試されると思います、ただ、最初 R5G6B5 で画面が真っ暗に
なってしまったということは R5G6B5 にも対応していないと思いますので、No.30 のバージョンでも
No.27 のバージョンと同じく A8B8G8R8 が使用され、結果として速度に変化は無いと思います
R5G6B5 にも X1R5G5B5 にも対応していないグラフィックスデバイスが何なのか知りたいところではありますね…
|
Re: DIBやDirectXについて ( No.33 ) |
- 名前:ギウ(解決) 日時:2019/06/16 15:53
返信きました。
仰る通り、速度に変更なしとのことです。
>R5G6B5 にも X1R5G5B5 にも対応していないグラフィックスデバイスが何なのか知りたいところではありますね…
謎ですね。あ、ハイカラー自体に対応してないとか。。
一先ず、今回の件は完了ということで。
ありがとうございました!
|