ZGameEditor & Android Setting
Moderator: Moderators
Re: ZGameEditor & Android Setting
I tested your zpong apk here now on Samsung S9. The background and ball is full white while the textured bats look correct. Sound is correct too.
I have no guess so far why it would look like this.
I have no guess so far why it would look like this.
Re: ZGameEditor & Android Setting
In ZPong, I see that BallMaterialTexture use "Generated" TexCoords, and I remember that Android (GL ES) does not support that. As for the white background, maybe try creating a project that animates App.ClearColor and see what happens? Something like "App.ClearColor.R=frac(App.Time*0.5);".
Re: ZGameEditor & Android Setting
Changing the App.ClearColor isn't working either. In Omeganaut, the planet sky appears correctly, but it is shown using alpha transparency and its material have Blend="1".
Here's the 8 template folder if anyone wants to run tests with me.
Here's the 8 template folder if anyone wants to run tests with me.
- Attachments
-
- 8 (API 26).zip
- Template folder for API 26
- (299.99 KiB) Downloaded 573 times
Last edited by Ats on Wed Dec 12, 2018 11:15 am, edited 1 time in total.
Re: ZGameEditor & Android Setting
Hi guys,
Try clearing the screen using a alpha value of 1 ( instead of the default 0 ). Unfortunately you can't do this using App.ClearColor right now ( as the alpha value is ignored ), so you need to execute the following OpenGL calls ( after the screen is cleared by ZGE but before anything is rendered ).
Perhaps Android uses the alpha channel of the frame-buffer as mask by default now .. so the default ( white ) composition below the OpenGL context ends up showing. Just a wild guess though.
K
Try clearing the screen using a alpha value of 1 ( instead of the default 0 ). Unfortunately you can't do this using App.ClearColor right now ( as the alpha value is ignored ), so you need to execute the following OpenGL calls ( after the screen is cleared by ZGE but before anything is rendered ).
Code: Select all
glClearColor(0, 0, 0, 1);
glClear(0x4100); // Clear color & depth bits
K
Re: ZGameEditor & Android Setting
So I've played with the alpha of the ball generated texture:
If pixel.A == 0 the ball is full white.
If pixel.A == 1 the ball is full black.
Then I made some tests with the OpenGL calls. If I put them in App.OnBeginRenderPass, nothing change.
But if I put them in App.OnRender (with App.RenderOrder = AppBeforeModels), the background is black, but the ball is still white.
Edit:
I just tried Omeganaut with App.RenderOrder = AppBeforeModels and OpenGL calls inside App.OnRender. It's better, but the models are still overexposed. I'm not sure that it'coming from the alpha...
Code: Select all
pixel.R = sin(sqrt(x*x + y*y)*16);
pixel.G = sin(sqrt(x + y*y)*25);
pixel.B = 0;
pixel.A = 1;
If pixel.A == 1 the ball is full black.
Then I made some tests with the OpenGL calls. If I put them in App.OnBeginRenderPass, nothing change.
But if I put them in App.OnRender (with App.RenderOrder = AppBeforeModels), the background is black, but the ball is still white.
Edit:
I just tried Omeganaut with App.RenderOrder = AppBeforeModels and OpenGL calls inside App.OnRender. It's better, but the models are still overexposed. I'm not sure that it'coming from the alpha...
Re: ZGameEditor & Android Setting
Hi Ats,
K
That's because when you use the OpenGL calls in OnBeginRenderPass, they get negated by the built-in clear calls shortly thereafter.
What blending mode are you using? Not every blending mode is supported by OpenGL ES.
K
Re: ZGameEditor & Android Setting
@Kjell: do you think I should change so that ZApplication use the alpha value of ClearColor?
Re: ZGameEditor & Android Setting
Ok, committed change to Github so that ClearColor.A is used (both in App and RenderTarget).
@Ats: After updating and rebuilding, make sure to set A value in your project. It can be done like this in OnLoaded:
@Ats: After updating and rebuilding, make sure to set A value in your project. It can be done like this in OnLoaded:
Code: Select all
if(ANDROID)
App.ClearColor.A=1;
Re: ZGameEditor & Android Setting
Here's the new libzgeandroid.so and a new APK for zpong. I'll try playing with the background color when I'll get home to see if everything's good for that.
- Attachments
-
- libzgeandroid.zip
- (274.12 KiB) Downloaded 547 times
-
- ZPong_api26 -debug.apk
- (288.44 KiB) Downloaded 563 times
Re: ZGameEditor & Android Setting
@Ats: I know you made notes already in this thread, but please also when you have time write a list of steps required to get latest Fpc for Android working with ZGE. So I can set this up myself later.
Re: ZGameEditor & Android Setting
Hahaha. That's a huge task. Luckily I wrote everything on a side note as I found how to do everything. Here's the tutorial. Maybe it can be optimized, but it should work.
JAVA
Install latest Java:
https://www.java.com/fr/download/
Install latest Java JDK:
https://www.oracle.com/technetwork/java ... index.html
Set environment variable JAVA_HOME C:\Program Files\Java\jdk1.8.0_191
ANDROID
Install Android NDK :
https://developer.android.com/ndk/downloads/
Unzip it inside c:\Android
Install Android SDK and Apache Ant:
Unfortunately, Android SDK is now included inside the HUGE Android Developer Studio. So the easiest way to get SDK and Ant is to install LazToApk:
https://sourceforge.net/projects/laztoapk/
And then retrieve those directories:
C:\laztoapk\downloads\android-sdk-windows
C:\laztoapk\downloads\apache-ant-1.10.3
Just copy/paste them inside C:\Android
Now you should have:
C:\Android\android-ndk-r18b
C:\Android\android-sdk-windows
C:\Android\apache-ant-1.10.3
And you can uninstall LazToApk.
Update Android SDK:
Launch C:\Android\android-sdk-windows\SDK Manager.exe
Here's what you need:
Tools \ Android SDK Tools
Tools \ Android SDK Platform-tools
Tools \ Android SDK Build-tools
Android 8.0.0 (API 26) \ SDK Platform
Android 4.1.2 (API 16) \ SDK Platform
FREE PASCAL
Install Free Pascal official release:
https://sourceforge.net/projects/freepa ... in32/3.0.4
fpc-3.0.4.i386-win32.exe
It should be installed to C:\FPC\3.0.4
Download Free Pascal Daily Source Snapshot of Development Tree (trunk):
https://www.freepascal.org/develop.var
Extract it to C:\FPC
Create the directory C:\FPC\trunk
Build Free Pascal trunk:
Inside C:\FPC\fpc, create make_i386.bat with:
Launch make_i386.bat and make some coffee.
Build Free Pascal cross Android Trunk:
Inside C:\FPC\fpc, create make_android.bat with:
Launch make_android.bat and go outside for some fresh air.
Add C:\Android\android-ndk-r18b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin
to your System environment variable Path
ZGAMEEDITOR
Download ZGameEditor source code:
https://github.com/VilleKrumlinde/zgameeditor
Here's my modified C:\zgameeditor-master\Build\android\m.bat with the correct folders:
And finally here's my modified AndroidManifest.xml:
And the default.properties file:
JAVA
Install latest Java:
https://www.java.com/fr/download/
Install latest Java JDK:
https://www.oracle.com/technetwork/java ... index.html
Set environment variable JAVA_HOME C:\Program Files\Java\jdk1.8.0_191
ANDROID
Install Android NDK :
https://developer.android.com/ndk/downloads/
Unzip it inside c:\Android
Install Android SDK and Apache Ant:
Unfortunately, Android SDK is now included inside the HUGE Android Developer Studio. So the easiest way to get SDK and Ant is to install LazToApk:
https://sourceforge.net/projects/laztoapk/
And then retrieve those directories:
C:\laztoapk\downloads\android-sdk-windows
C:\laztoapk\downloads\apache-ant-1.10.3
Just copy/paste them inside C:\Android
Now you should have:
C:\Android\android-ndk-r18b
C:\Android\android-sdk-windows
C:\Android\apache-ant-1.10.3
And you can uninstall LazToApk.
Update Android SDK:
Launch C:\Android\android-sdk-windows\SDK Manager.exe
Here's what you need:
Tools \ Android SDK Tools
Tools \ Android SDK Platform-tools
Tools \ Android SDK Build-tools
Android 8.0.0 (API 26) \ SDK Platform
Android 4.1.2 (API 16) \ SDK Platform
FREE PASCAL
Install Free Pascal official release:
https://sourceforge.net/projects/freepa ... in32/3.0.4
fpc-3.0.4.i386-win32.exe
It should be installed to C:\FPC\3.0.4
Download Free Pascal Daily Source Snapshot of Development Tree (trunk):
https://www.freepascal.org/develop.var
Extract it to C:\FPC
Create the directory C:\FPC\trunk
Build Free Pascal trunk:
Inside C:\FPC\fpc, create make_i386.bat with:
Code: Select all
PATH=C:\FPC\3.0.4\bin\i386-win32;
SET FPC=C:\FPC\3.0.4\bin\i386-win32\fpc.exe
make.exe clean distclean
make.exe all OPT="-gw -godwarfset -O-1"
make.exe install INSTALL_PREFIX=c:\FPC\trunk COPYTREE=echo
Build Free Pascal cross Android Trunk:
Inside C:\FPC\fpc, create make_android.bat with:
Code: Select all
PATH=C:\FPC\3.0.4\bin\i386-win32;C:\Android\android-ndk-r18b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin;
SET FPC=C:\FPC\3.0.4\bin\i386-win32\fpc.exe
make clean crossall crossinstall OS_TARGET=android CPU_TARGET=arm CROSSOPT="-dANDROID -CpARMv6 -CfVFPv2" INSTALL_PREFIX=C:\FPC\trunk
Add C:\Android\android-ndk-r18b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin
to your System environment variable Path
ZGAMEEDITOR
Download ZGameEditor source code:
https://github.com/VilleKrumlinde/zgameeditor
Here's my modified C:\zgameeditor-master\Build\android\m.bat with the correct folders:
Code: Select all
pushd "%~dp0"
if not exist "java\libs\armeabi\" mkdir java\libs\armeabi
if not exist "lib\arm-linux\" mkdir lib\arm-linux
C:\FPC\trunk\bin\i386-win32\ppcrossarm -B -MDelphi -Sghi -O3 -Tandroid -Parm -XXis -vw -Filib\arm-linux -FlC:\Android\android-ndk-r18b\platforms\android-26\arch-arm\usr\lib -Fu. -Fu..\.. -FUlib\arm-linux\ -FEjava\libs\armeabi\ -olibzgeandroid.so -dANDROID -dMINIMAL -Xd -CpARMV6 -CfVFPv2 zgeandroid.pas
IF %ERRORLEVEL% NEQ 0 GOTO error
cd java
call m.bat
cd ..
:error
popd
pause
And finally here's my modified AndroidManifest.xml:
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="$package$"
android:versionCode="$versionnumber$"
android:versionName="$versionname$" >
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="26"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.hardware.gamepad" />
<application
android:icon="@drawable/icon"
android:label="$title$" >
<meta-data android:name="isGame" android:value="true" />
<activity
android:label="$title$"
android:name="org.zgameeditor.ZgeActivity"
android:configChanges="screenLayout|orientation|keyboardHidden|fontScale"
android:screenOrientation="sensorLandscape" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Code: Select all
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-26
Last edited by Ats on Tue Jan 08, 2019 6:31 pm, edited 1 time in total.
Re: ZGameEditor & Android Setting
Thanks Ats . Wow, that is indeed a lot of work.
Re: ZGameEditor & Android Setting
I'm up to something!
In Omeganaut, I don't use textures. I prefer full colored shapes using MeshExpression. And it seems that when making an apk API 26, the alpha if the VertexColors is set to 0.5 (+/-) instead of 1. Or maybe the alpha value is divided by 10 at some point?
So if I set my color like that, everything is ok.
I think it's the same for textured polygons. Maybe we should force that directly in ZGE sourcecode instead of setting the alpha on each and every meshes?
In Omeganaut, I don't use textures. I prefer full colored shapes using MeshExpression. And it seems that when making an apk API 26, the alpha if the VertexColors is set to 0.5 (+/-) instead of 1. Or maybe the alpha value is divided by 10 at some point?
So if I set my color like that, everything is ok.
Code: Select all
C.R=1;
C.G=0;
C.B=0;
C.A=1;
Re: ZGameEditor & Android Setting
I checked the code and ZGE does not set any default values for the mesh colors so alpha can be any value (but most likely zero). What material do you render your mesh with? Does it use blending or not? For some reason I guess that on Android it uses blending but not on Windows.