トップページ > 記事閲覧
iOS版DXライブラリでの不具合について
名前:・∀・ 日時: 2021/03/07 09:54

平素はライブラリの製作・メンテナンスをくださりありがとうございます。 この度Win版で作ったアプリをAndroid/iOSに移植する作業を行っているのですが、 その過程で実機デバッグにて下記3点の不具合を確認したためご報告いたします。 [確認不具合] 1. PlaySoundMem()にて短い音源をループさせるとノイズが混入する   上記関数にて0.125秒の音源をループ再生させたところ、iOS版のみノイズが混入します。   なお、長い音源ではノイズは再現しませんでした。   src:ttps://github.com/M1spark20/TriSpark_Slot_VC2019/blob/master/TriSpark_Slot/_src/CSlotSoundManager.cpp   (呼び出し箇所:111行目) 2. GetTouchInput()による画面下端のタッチ判定が遅い   iPhoneを横画面にして上記関数にてタッチ位置を取得したところ、   解像度設定:1920x1080では y>980程度 の位置のタッチ取得に約0.5秒の遅延が発生します。   なお、別に1点以上タッチしていると即座に反応する点も確認しました。   Android版では同事象は再現しませんでした。   src:ttps://github.com/M1spark20/TriSpark_Slot_VC2019/blob/master/TriSpark_Slot/_src/keyinput.cpp   (呼び出し箇所:27行目) 3. DrawRectExtendGraph()での画像拡大率が意図したとおりにならない   元の解像度15x15の画像を上記関数にて1020x180に拡大したところ、拡大結果が   意図した大きさになりませんでした。(x側について、拡大後のサイズw=1012程度、y側はすいません不明です)   Android版では同事象は再現しませんでした。   src:ttps://github.com/M1spark20/TriSpark_Slot_VC2019/blob/master/TriSpark_Slot/_src/ImageDestinationManager.cpp   (呼び出し箇所:243行目) [実行環境]  動作環境      :iPhone8 64GB(システムバージョン:14.4)  iOS版DXLibバージョン:v3.22c  Win版DXLibバージョン:v3.22(参考) 上記3点取り急ぎ報告いたします。 事象を再現したファイルが必要でしたらご教示ください。こちらで準備いたします。 恐れ入りますが、ご確認のほどよろしくお願いします。
メンテ

Page: 1 |

Re: iOS版DXライブラリでの不具合について ( No.1 )
名前:管理人 日時:2021/03/08 23:13

ご報告ありがとうございます 現在若干時間の確保が難しい状態になっているので、少しお時間を頂くかもしれません > 1. PlaySoundMem()にて短い音源をループさせるとノイズが混入する すみません、現象を確認された0.125秒の音源をご提供頂けますでしょうか? m(_ _;m > 2. GetTouchInput()による画面下端のタッチ判定が遅い 確認してみます > 3. DrawRectExtendGraph()での画像拡大率が意図したとおりにならない > x側について、拡大後のサイズw=1012程度、y側はすいません不明です すみません、こちらはどのようにして拡大後のサイズが8pixel程度小さいと判断されたのでしょうか? 8pixelというとかなり見た目には小さな違いですが…
メンテ
Re: iOS版DXライブラリでの不具合について ( No.2 )
名前:・∀・ 日時:2021/03/09 23:38

ご返答ありがとうございます。以下に追加の情報を示します。 1について:  音源はこちらです:ttps://ux.getuploader.com/sinSpark_tempDocs/download/3  また、iPhone上で動作確認を行った結果を動画にしましたので、以下にてご確認ください。  (結構大きめのノイズが乗っているため、音量注意です。)   ttps://share.icloud.com/photos/03EporVp44eowm2BE4R4X0aeA 3について:  以下の2枚の画像を見比べていただきたいです。   Win版:ttps://ux.getuploader.com/sinSpark_tempDocs/download/1   iPhone版:ttps://ux.getuploader.com/sinSpark_tempDocs/download/2  Win版の画像に示す青い四角の範囲内で、必要なタイミングで拡大した画像を  乗算ブレンドで暗くする処理を行っています。  この画像の拡大範囲は画面上の文字"TRISPARK"の端から端まで、1020x180pxです。  拡大元画像は15x15pxの単色四角形です。  iPhone版の画面については、文字を暗くするタイミングのキャプチャを行いました。   (動画キャプチャーの1コマをスクショした関係で、画質が悪くなっています。ご了承ください。)  ソースコードおよび入力データについてはPC版と全く同じ状態で動作させています。  "TRISPARK"の文字について、画面右側の一部が明るいままとなっているのが問題の箇所です。  (キャプチャにて確認したところ、実際には拡大後サイズw=1004程度、つまり16pxほど小さくなっていました。)  ※なお改めて確認したところ、今回指摘した手法と同様に画像を拡大して描画している   スロットリール枠の部分も描画終端付近で切れていることが確認されました。   こちらも同様の理由で発生していると思われます。 以上、お忙しいところ恐れ入りますがご確認のほどよろしくお願いします。
メンテ
Re: iOS版DXライブラリでの不具合について ( No.3 )
名前:管理人 日時:2021/03/11 01:16

ご返答ありがとうございます 頂いたご情報を元に確認してみます
メンテ
Re: iOS版DXライブラリでの不具合について ( No.4 )
名前:管理人 日時:2021/03/13 01:38

お待たせしてすみません 小出しで申し訳ありませんが、まずは1の対応をしてみました 手元の環境ではノイズは確認できなかったのですが、 とりあえず使用するサウンドAPIを OpenAL から Core Audio に変更してみました よろしければ・∀・さんの環境でも正常にサウンドが再生されるかお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版
メンテ
Re: iOS版DXライブラリでの不具合について ( No.5 )
名前:管理人 日時:2021/03/14 01:47

1に続いて2も対応できましたので、よろしければお試しください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 3についてなのですが、以下のようなテストプログラムで DrawRectExtendGraph を テストしてみたのですが、 #include "DxLib.h" int ios_main( void ) { int ScreenHandle ; SetBackgroundColor( 128,128,128 ) ; SetGraphMode( 1280, 720, 32 ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 1024x1024 の画像を作成して、その一部に緑色の四角形を描画 ScreenHandle = MakeScreen( 1024, 1024, TRUE ) ; SetDrawScreen( ScreenHandle ) ; ClearDrawScreen() ; DrawBox( 512 + 1, 512 + 1, 512 + 14, 512 + 14, GetColor( 0, 255, 0 ), TRUE ) ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // メインループ while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen() ; // 正しく描画できているか確認するための赤い四角を描画 DrawBox( 16, 16, 16 + 1020, 16 + 180, GetColor( 255,0,0 ), TRUE ) ; // その上に作成した画像の一部を拡大描画 SetDrawMode( DX_DRAWMODE_BILINEAR ) ; DrawRectExtendGraph( 16, 16, 16 + 1020, 16 + 180, 512, 512, 15, 15, ScreenHandle, TRUE ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } ↑こちらのテストプログラムを実行する限りでは DrawRectExtendGraph は正常に動作しました ( 位置がずれるなどの現象は発生しませんでした ) 恐らく DrawRectExtendGraph で切り抜かれている画像のサイズや位置などが関係ていると 思いますので、DrawRectExtendGraph で描画している画像の、元画像のサイズと、元画像の どの部分の15x15を切り取って描画しているのかを教えていただけないでしょうか? m(_ _)m
メンテ
Re: iOS版DXライブラリでの不具合について ( No.6 )
名前:・∀・ 日時:2021/03/14 23:35

すいません、返答が遅くなりました。 本件ご対応くださいましてありがとうございます。 こちらの実機環境にて検証してみたのですが、いずれの問題についても現象が発生する状態のままでした…。 (頂いたソースを展開し、ライブラリに登録したフォルダにコピーしてクリーンビルドしました) 1.について:  初回の鳴動時に前回の動画のようなノイズが再現することがあります。  また、これも前回からありましたが繰り返し時にキックみたいな低音がします。 2.について:  反応しなかった場所に指を置いて少しスワイプさせるとすぐ反応するようになりましたが、  指を移動させないタップの場合同様の位置でまだ反応が悪いです…。 3.について:  ファイルは以下のもので、切り抜き位置は(777,858)から15,15pxの範囲です。   ttps://ux.getuploader.com/sinSpark_tempDocs/download/4  なお境界部分のボケを防ぐため、画像はNEARESTにて拡大を行っています。  ※NEARESTにしてるのが問題なのかもしれません…サンプルはBILINEARでした。 以上、ご確認のほどよろしくお願いします。
メンテ
Re: iOS版DXライブラリでの不具合について ( No.7 )
名前:管理人 日時:2021/03/15 00:21

お試しいただきありがとうございます 各項目について確認した後ご返信します m(_ _)m
メンテ
Re: iOS版DXライブラリでの不具合について ( No.8 )
名前:・∀・ 日時:2021/03/15 12:49

恐れ入ります、ありがとうございます。 大変お手数をおかけして申し訳ございません。 タッチ反応遅れについては原因に検討もつかないのですが、 そういえば音や画像のリソースは全て非同期読み込みしていましたので、 何かのヒントになればと思い情報共有します。 特に音の問題に関しては非同期読み込みにてバッファオーバーラン等が 発生していないか少し心配です…手元でも後程同期読みこみで試してみます。 ご確認のほどよろしくお願いします。
メンテ
Re: iOS版DXライブラリでの不具合について ( No.9 )
名前:管理人 日時:2021/03/17 00:27

すみません、原因を調べた所、DxLibiOSTest.zip 内の libDxLib_iOS.a 等のファイルの中身が更新されていませんでした ( つまり No.4, No.5 の修正は No.4, No.5 の投稿のファイルには含まれていませんでした orz  libDxLib_iOS.a などのファイルの更新日時が更新されていたので、気付きませんでした… ) 今まで一つの libDxLib_iOS.a の中にシミュレーター用と実機用のファイルを含めていたのですが、 最近それができなくなっていたようで、その為『更新日時は更新されるけど中身は昔のまま』という状態でした なのでその状態を修正したものをこちらにアップしましたので、お手数で申し訳ありませんが よろしければダウンロードしてください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 ただ、今回のバージョンから一つの libDxLib_iOS.a の中に複数の環境用のファイルを含められなかった関係で フォルダ構成が以下のように変更されています <今まで>  [DxLibiOSTest.zipのルートフォルダ]    [DxLibiOSTest]      シミュレーターと実機どちらでも使えるファイル一式 <今回以降>  [DxLibiOSTest.zipのルートフォルダ]    [DxLibiOSTest]      [Debug-iphoneos]        実機のデバッグビルド用ファイル一式      [Debug-iphonesimulator]        シミュレーターのデバッグビルド用ファイル一式      [Release-iphoneos]        実機のリリースビルド用ファイル一式      [Release-iphonesimulator]        シミュレーターのリリースビルド用ファイル一式 なので、『Build Settings』内の『Header Search Paths』と『Library Search Paths』に記述するパスを、今までのパスの後ろに /$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) を追加して頂く必要があります( 上記の記述でビルド構成に応じて自動的に使用されるフォルダが変化します ) ( 例えば今までのパスが /Users/user1/Downloads/DxLib_iOS/プロジェクトに追加すべきファイル_iOS用 だった場合は、 /Users/user1/Downloads/DxLib_iOS/プロジェクトに追加すべきファイル_iOS用/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) となります ) 面倒で申し訳ありませんが設定を変更してください m(_ _;m > 3.について: >  ファイルは以下のもので、切り抜き位置は(777,858)から15,15pxの範囲です。 >   ttps://ux.getuploader.com/sinSpark_tempDocs/download/4 >  なお境界部分のボケを防ぐため、画像はNEARESTにて拡大を行っています。 >  ※NEARESTにしてるのが問題なのかもしれません…サンプルはBILINEARでした。 ご情報ありがとうございます 手元でアップしていただいたファイルを使用して以下のようなテストプログラムを実行してみた限りでは、 やはり描画される範囲が小さくなる、といった現象は発生しませんでした ( 15x15 の領域を 1020x180 に拡大して描画する範囲より、2pixelだけ大きい緑色の四角形を 描画するテストプログラムなのですが、上下左右の各辺は偏ることなく縁に細い緑色の線が見える状態 ( 1020x180 の拡大が正常に行われている状態 )でした ) #include "DxLib.h" int ios_main( void ) { int GrHandle ; SetBackgroundColor( 128,128,128 ) ; SetGraphMode( 1280, 720, 32 ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; GrHandle = LoadGraph( "parts_FHD.png" ) ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // メインループ while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen() ; // 15x15の拡大描画範囲より少しだけ大きい緑色の四角形を描画する DrawBox( 16 - 2, 16 - 2, 16 + 1020 + 2, 16 + 180 + 2, GetColor( 0,255,0 ), TRUE ) ; // 15x15の範囲を1020x180に拡大して描画 DrawRectExtendGraph( 16, 16, 16 + 1020, 16 + 180, 777, 858, 15, 15, GrHandle, FALSE ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } よろしければ・∀・さんの環境でも上記のプログラムでは正常な描画結果が得られるかご確認ください m(_ _)m
メンテ
Re: iOS版DXライブラリでの不具合について ( No.10 )
名前:・∀・ 日時:2021/03/17 20:58

上記ご対応いただきありがとうございます。 手元で検証した結果、1のノイズおよび2の反応遅れにつきましては解消していることを確認いたしました。 3についてですが、手元で確認したところ「パッと見」では確かに正常な描画結果が得られておりました。 しかしよく画像を拡大すると、四角形右端の部分で若干塗りつぶしの色が濃くなっていることが分かりました。 スクリーンショットを撮りましたので、共有します。 ttps://share.icloud.com/photos/0xgrMC3djiMAVtP-zyPpIFAfQ また指定した元画像の四角形の左側にある、白い四角形(760,858) 15x15pxについても検証しました。 スクリーンショットを下記に示します。なんと左端が黒く出てしまう現象が発生しております。 ttps://share.icloud.com/photos/06SF34jweV9cqAlgr9U-leXqg さらにより分かりやすく現象を再現するため、別の画像について拡大してみました。 拡大画像は1つ目のリンク、位置は(184,53) 1x1pxです。背景の四角は色を(255,255,255)としました。 描画結果のスクリーンショットを2つ目のリンクに示します。 水色単色で描画されることを期待していましたが、周りの色が映りこんでしまっているのが分かります。 ttps://github.com/M1spark20/TriSpark_Slot_VC2019/blob/master/TriSpark_Slot/data/image/colorMapLEDArray.png ttps://share.icloud.com/photos/0lDujxqJ7uhlaqnGwWiAqQ_Yg 最後に、3番目に示した実験を行った際のコードを以下に示します。 #include "DxLib.h" int ios_main( void ) { int GrHandle ; SetBackgroundColor( 128,128,128 ) ; SetGraphMode( 1280, 720, 32 ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; GrHandle = LoadGraph( "data/image/colorMapLEDArray.png" ) ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // メインループ while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen() ; // 15x15の拡大描画範囲より少しだけ大きい緑色の四角形を描画する DrawBox( 16 - 2, 16 - 2, 16 + 1020 + 2, 16 + 180 + 2, GetColor( 255,255,255 ), TRUE ) ; // 15x15の範囲を1020x180に拡大して描画 DrawRectExtendGraph( 16, 16, 16 + 1020, 16 + 180, 184, 53, 1, 1, GrHandle, FALSE ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } この情報で何とか解決への糸口を掴んでいただければ幸いです… 難しい問題だと思いますが、引き続きよろしくお願いいたします。
メンテ
Re: iOS版DXライブラリでの不具合について ( No.11 )
名前:管理人 日時:2021/03/19 01:02

無事 1 と 2 については解決したようでなによりです 3 については厄介ですね… 載せていただいたコードを WindowsPC、 Android実機、 iOSシミュレーター、 iOS実機( iPhone7 )で 実行してみた所、iPhone7 でのみ周りの色が映りこんでしまう現象が発生しました ( しかも ・∀・さんが試された iPhone8 とはまた異なる結果で、左・上・左上の色が映りこんで右側は問題なしでした ) もしかしたら処理速度を稼ぐためにテクスチャ座標の計算精度を下げているのかもしれません 対策を考えてみますが、最終的には 『iOS では DrawExtendGraph で元解像度の〇倍以上には拡大しないようにしてください』 という注意書きを DrawExtendGraph 系の関数の解説に書くことになるかもしれません…
メンテ
Re: iOS版DXライブラリでの不具合について ( No.12 )
名前:管理人 日時:2021/03/19 23:28

3 について、シェーダーのテクスチャ座標の計算精度を上げた所、かなり症状が改善しました よろしければこちらをお試しください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 ただ、まだ端の1ピクセルくらいは隣のピクセルの色が出てしまいます とはいえ、恐らくこれ以上は改善できないので、申し訳ありませんが 使用したい範囲から上下左右1ピクセル分は映りこんでも問題の無い 色のピクセルにする、といった対応をするようにしてみてください m(_ _;m
メンテ
Re: iOS版DXライブラリでの不具合について ( No.13 )
名前:・∀・ 日時:2021/03/20 01:30

ありがとうございます。検証してみた結果を下記スクリーンショットに示します。  ttps://share.icloud.com/photos/0qsZ9SaN6EdP1aGgojJc_za_A …恐れ入ります、手元では状況の改善が確認できませんでした…。orz お手数ですが確認を頂けないでしょうか…?
メンテ
Re: iOS版DXライブラリでの不具合について ( No.14 )
名前:管理人 日時:2021/03/21 00:01

今回は前回のように libDxLib_iOS.aファイルの中身が更新されていなかった、ということはありませんでした ( 手元で libDxLib_iOS.a を使用して実行しても精度が上がっていました ) 一応もう一度アップしてみましたので、よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibiOSTest.zip // iOS版 これでも駄目でしたら、恐らく機種によって高精度指定に対する解釈が異なって、 iPhone8 では効果が無い、という事なのかもしれません その場合は申し訳ありませんが 15x15 の周りの数ドットも映りこんでも問題ない 色にしていただくか、1020x180 に近い解像度のパーツを用意していただくしかないと思います (_ _;
メンテ
Re: iOS版DXライブラリでの不具合について ( No.15 )
名前:・∀・(解決) 日時:2021/03/22 22:17

ご確認ありがとうございます。 改めてライブラリファイルを一度削除し、新データをコピー、クリーンビルドしたのですが、 残念ながら手元での実行結果は以前のもののままとなりました…。 このため暫定対策として拡大する画像について、拡大率の大きい方向に対し下記の処置を実行しました。  「切り出し起点を画像開始位置の1px内側にし、範囲も1px手前までを指定する」   ※例えば(50,50)起点、8*72pxの画像を8*1080に拡大するときは、切り出し範囲(x,y,w,h)=(50,51,8,70)    (100,100)起点、15*15pxの画像を300*300に拡大するときは、切り出し範囲(x,y,w,h)=(101,101,13,13) こうすることにより、他のプラットフォームでの描画結果を維持しながら、iOS側の描画も 不自然な拡大ミスなく描画することが可能となりました。 これは今までの実験により、はみ出して書かれる元画像の範囲は最大1pxであることが判明したことによります。 また独自に調査した結果、はみ出しは大きな拡大を行った方向にのみ現れることを確認しています。 管理人様のご助言をいただき期待した描画結果を得られたことから、 本トピックにつきましては一旦クローズとさせていただきたいと思います。 約2週間にわたる長期間にわたり、本件について親身にご検討くださり誠にありがとうございました。 引き続きよろしくお願いいたします。 p.s. 私の手元環境であるiPhone8にて動作確認を行いたい等、ご要望があればお気軽にご連絡ください。 当方でもできる限り協力させていただきます。【連絡先:spaaaark.sin120<at>gmail.com】
メンテ
Re: iOS版DXライブラリでの不具合について ( No.16 )
名前:管理人(解決) 日時:2021/03/23 00:35

結果は変わらずでしたか… ともあれ、なんとか意図された描画結果が得られたようで何よりです > p.s. 私の手元環境であるiPhone8にて動作確認を行いたい等、ご要望があればお気軽にご連絡ください。 > 当方でもできる限り協力させていただきます。【連絡先:spaaaark.sin120<at>gmail.com】 ありがとうございます もし iPhone8 ではないと動作確認ができない、というような案件がありましたらご連絡させていただきます m(_ _)m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存