Re: Android版:ReCreateGraphFromMem ( No.1 ) |
- 名前:管理人 日時:2017/03/13 00:27
ご指摘ありがとうございます
16bitのBmp画像の読み込みに Windows以外の環境では対応していませんでした
自分でもすっかり忘れていたのですが、16bitのBmp画像を24bitのBmp画像に
変換してから読み込んでおり、16bit -> 24bit の変換に Win32 API を使用していました
現在では 16bit画像のまま読み込めるようになっているので
『Windows以外では Win32 API が使用できないのでエラー』としていた箇所を修正して
16bit画像も読み込めるようにしました
その変更を施したバージョンをこちらにアップしましたので、よろしければお試しください m(_ _;m
https://dxlib.xsrv.jp/temp/DxLibAndroidTest.exe // Android用
|
Re: Android版:ReCreateGraphFromMem ( No.2 ) |
- 名前:ギウ(解決) 日時:2017/03/13 09:19
あ、非対応だったのですね;
ご対応頂き有難うございます!
正常な動作を確認しました&速度も問題なく高速です!(PC側と大差ないくらいに)
この機能があれば自社ライブラリと併用して使えるので、何本かAndroidへ移植しようと思ってます。
改めまして、素晴らしいライブラリを有難うございます。
今後とも(今回みたいな動作報告くらいしかお手伝いできませんが;)よろしくお願い致します。
|
Re: Android版:ReCreateGraphFromMem ( No.3 ) |
- 名前:ギウ 日時:2017/03/13 17:56
度々すみません、ReCreateGraphFromMemの処理速度についてですが、
SetGraphMode(960,540,16); で画面を作り、
960x540x16bitカラーのメモリ画像を ReCreateGraphFromMem&DrawGraph で表示すると、22msくらいでした。
どちらも32bitにしてみると、
SetGraphMode(960,540,32);
960x540x32bitカラーのメモリ画像を ReCreateGraphFromMem&DrawGraph で表示すると、7〜10msくらいでした。(どちらも実機での速度です)
質問ですが、16bitのBMPを毎フレーム変えながら表示したい場合、
最速の方法は、↓な感じでしょうか。
=====================
SetGraphMode(960,540,32); // 32bitで画面を作成
; // (中略)
int gid = MakeGraph(960,540);
while(ProcessMessage()==0)
{
; // ここで16bitのBMPをいろいろ変える(CPUによるメモリ操作で)
; // ここで16bitのBMPを、32bitのBMPに手動で変換
ReCreateGraphFromMem(bmp32, size, gid); // 32bitのBMPをDX用に変換
DrawGraph(0,0,gid,FALSE); // 全画面に表示
ScreenFlip(); // 画面に反映
}
=====================
より速く描画できる方法がありましたら教えてください。
よろしくお願いいたします。
|
Re: Android版:ReCreateGraphFromMem ( No.4 ) |
- 名前:ギウ 日時:2017/03/13 19:10
追記。
16bit→32bitに手動変換の部分は、リリースで1〜2msくらいでした。
(一先ずこの状態で開発を進めます)
あと上記が最速の場合、
「16bitカラーのみのスマホか、32itカラー可能なスマホか」を判定できれば、それ毎の処理をできるのですが、判定は可能でしょうか。
(あまり需要の無さそうな要望ですみません;)
|
Re: Android:ReCreateGraphFro〜追記 ( No.5 ) |
- 名前:管理人 日時:2017/03/14 01:00
すみません、DXライブラリはよく使用されるピクセルフォーマットの変換は
専用の高速に実行できるコードを用意しているのですが、
16bit の Bitmap( X1R5G5B5 or R5G6B5 ) から、
OpenGL ES 2.0 の 16bit テクスチャフォーマット( R5G5B5A1 ) に高速に変換するコードを用意していませんでした
( 高速なコードがない場合は『低速だけどどんなピクセルフォーマットの変換でも行えるコード』で変換が実行されます )
手元の Android環境で 16bit Bitmap → OpenGL ES 2.0 16bit Texture のピクセルフォーマット変換を
高速に行うためのコードを追加してみましたので、よろしければこちらのコードを追加したバージョンを使用して
SetGraphMode(960,540,16);で画面を作り、960x540x16bitカラーのメモリ画像を使用する
という方法( 高速コード用意前は 22ms だった環境 )を試してみてください m(_ _;m
https://dxlib.xsrv.jp/temp/DxLibAndroidTest.exe // Android用
> 「16bitカラーのみのスマホか、32itカラー可能なスマホか」を判定できれば、それ毎の処理をできるのですが、判定は可能でしょうか。
OpenGL ES 2.0 が動作する環境では 32bitカラーや 16bitカラーには必ず対応しているので、
少なくともDXライブラリAndroid版が動作する環境であれば 32bitカラーに対応しているかどうかの確認は不要です
|
Re: Android:ReCreateGraphFro〜追記 ( No.6 ) |
- 名前:ギウ(解決) 日時:2017/03/14 09:16
ご対応有難うございます!
(555と565以外にもOpenGL用があったんですね)
試してみたところ、平均5ms〜6msの速度になってました!
これなら遅いスマホが11msくらいとしても余裕ができます。
> 少なくともDXライブラリAndroid版が動作する環境であれば 32bitカラーに対応しているかどうかの確認は不要です
了解です! ではこれで解決ということで。
今回も有難うございました!
|