Re: Android版: 端末の向きによって画面解像度を変えたい ( No.1 ) |
- 名前:管理人 日時:2018/02/12 00:15
> どうやらGetAndroidDisplayResolutionはDxLib_Initの呼び出しでサイズを取得する仕様のようでして
> 途中から向きを変えた解像度は取得できませんでした。
GetAndroidDisplayResolutionはDxLib_Initの呼び出しでサイズを取得する仕様、という訳ではないのですが、
環境によってはそのような挙動になってしまうようです( 手元の環境 F-02H では常に最新のサイズが返ってきます・・・ )
複数のプラットフォームに対応しているAPIである EGL の eglQuerySurface という関数を使用して解像度を取得するように
していたのですが、ANativeWindow_getWidth と ANativeWindow_getHeight という、より Androidネイティブな機能がありましたので
そちらを使用するように処理を変更してみました
手元でも変更前は正常に回転後の解像度が反映されなかったエミュレーター環境でも変更後は正常に回転後の解像度が
反映されるようになりましたので、Oomimiさんの環境でも正常に動作する可能性が高いと思います
よろしければその変更を加えたこちらのバージョンをお試しください m(_ _)m
https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用
https://dxlib.xsrv.jp/temp/DxLibAndroidTest_x86.exe // Android版 x86用
> または、端末の向きを取得する関数はありますでしょうか?
端末の向きを取得する関数は Java からしか使用できないようなので、DXライブラリの関数として追加するのは無理そうです・・・
|
Re: Android版: 端末の向きによって画面解像度を変えたい ( No.2 ) |
- 名前:Oomimi 日時:2018/02/12 02:01
迅速な対応ありがとうございます。
無事に向きを変えられることが出来ました。
しかし、重要な問題が発生しまして…
端末の向きを変えて画面サイズを変更した後、
メモリに読み込んである画像が線画できなくなり、画面が点滅する不具合が発生しました。
今、開発しているゲームのコードだと長すぎるので、確認用に以下の簡単なコードを書いてみましたが、
やはり同じ不具合が発生しました。
対策がわからないのでご教授お願い致します。
#include "DxLib.h"
int android_main()
{
if (DxLib_Init() == -1) return -1;
int SizeX = 800;
int SizeY = 600;
GetAndroidDisplayResolution(&SizeX, &SizeY);
SetGraphMode(SizeX, SizeY, 32);
if (SetDrawScreen(DX_SCREEN_BACK)) {
DxLib_End();
return -1;
}
int money = LoadGraph("picture/item/money.png");
int NewSizeX = 800;
int NewSizeY = 600;
while (!ProcessMessage() && !ScreenFlip() && !ClearDrawScreen() && !CheckHitKey(KEY_INPUT_ESCAPE)) {
DrawGraph(0, 0, money, TRUE);
GetAndroidDisplayResolution(&NewSizeX, &NewSizeY);
if (NewSizeX != SizeX || NewSizeY != SizeY) {
SetGraphMode(NewSizeX, NewSizeY, 32);
SetDrawScreen(DX_SCREEN_BACK);
SizeX = NewSizeX;
SizeY = NewSizeY;
}
}
DxLib_End();
return 0;
}
> 端末の向きを取得する関数は Java からしか使用できないようなので、DXライブラリの関数として追加するのは無理そうです・・・
わかりました。
 |
Re: Android版: 端末の向きによって画面解像度を変えたい ( No.3 ) |
- 名前:Oomimi 日時:2018/02/12 06:06
すみません。
SetGraphModeを実行すると読み込んでいた画像が消える仕様でしたね。
メモリから画像を消さずに画面解像度を変える方法はありますでしょうか?
|
Re: Android版: 端末の向きによって画面解像度を変えたい ( No.4 ) |
- 名前:管理人 日時:2018/02/13 00:46
> メモリから画像を消さずに画面解像度を変える方法はありますでしょうか?
はい、DxLib_Init の呼び出しの後に
SetChangeScreenModeGraphicsSystemResetFlag( FALSE ) ;
を実行すれば画面解像度を変更してもグラフィックハンドルが無効にならなくなります
よろしければお試しください
|
Re: Android版: 端末の向きによって画面解像度を変えたい ( No.5 ) |
- 名前:Oomimi(解決) 日時:2018/02/13 04:47
ありがとうございます!
無事に解決できました。
|