はじめまして
youtube:emWin for RA Start-up『サンプルアプリケーションの立ち上げ・APIとデザインツール』を参考にEK-RA6M3Gを使って画面表示の確認を行っています。
環境:windows 10 pro 64bit、e2studio 2024-01.1、fsp 5.2.0GNU Tools for ARM Embedded Processors 13.2.1.arm-13-7
QuickStartアプリは問題なく動作し、segger社提供のTutorials:DIALOG_MessageBox も問題なく動作しました。しかしながら他のサンプルプログラムで以下のような問題が発生しています
・BASIC_TestScreen
最後の処理の GUI_InvertRect(10, 10, Rect.x1 - 10, Rect.y1 - 10); では、矩形領域が反転表示されるはずですが白い矩形で塗り潰されてしまいます(左側の図はEK-RA6M3Gで動かしたときの画面の写真。右側の図はTutorialのWindwosアプリのスクリーンショットです)
・AA_Text
一見、きれいに想定通りに描画されているようにも見えますが、左の列の矩形内の背景描画の処理 GUI_AA_FillCircle() がアルファブレンド処理されていません。"ABC"のテキスト描画はアンチエイリアス処理が正しく行われて綺麗に表示されているように見えます※追記:当初GUI_AA_FillCircle()が矩形内に描画されなかったので、378~380行目の *= FactorAA を *= 1 に修正しています
APIによってアルファブレンド処理がうまく動作しない、あるいは、描画済みフレームバッファの読み込みができていないようにも思えます。原因あるいは解決策などわかりましたらご教示頂きたいです。
コメント失礼します。
どちらもemWinではなく、Dave2Dエンジンドライバ関連が原因のようです。
以下のようにLCDCONF_DisableDave2D()関数を入れてDave2Dエンジン機能を無効
にしますと問題現象は発生しないかと思われます。
void MainTask(void) {
GUI_Init();
LCDCONF_DisableDave2D();
コメントありがとうございます
確かに、LCDCONF_DisableDave2D() で問題なく描画できるようになるようです。LCDCONF_DisableDave2D() の実体は、ra\fsp\src\rm_emwin_port\LCDConf.c にありました。これを見ると、初期化時に LCDCONF_EnableDave2D() でDave2Dエンジンを利用するときの呼び出し先をファンクション毎に設定していて、LCDCONF_DisableDave2D() ではそれを無効化してemWinの描画機能を利用するように切り替えているようです。同モジュール内の _FillCircleAA() や _DrawChar4bpp() や _LCD_FillRect() などの関数内で、Dave2D機能を呼び出すまでの手続きにもしかしたら問題があってそれを修正すれば解決するかもしれないですが、それを私が実施するのは現時点では難しいです。
Dave2Dエンジン機能が搭載されているのにそれを利用できないのはこのマイコンを使うメリットが半減してしまう気がします。他のマイコンへの切り替えを余儀なくされるところまではいかないと思いますが、描画性能が落ちてしまうことには留意が必要そうです。