View Issue Details

IDProjectCategoryView StatusLast Update
0000088Gorilla3DBug Reportspublic2020-08-05 13:01
Reporteradministrator Assigned Toadministrator  
PriorityurgentSeveritymajorReproducibilitysometimes
Status resolvedResolutionfixed 
Product Version0.8.2.x 
Target Version0.8.2.xFixed in Version0.8.2.x 
Summary0000088: Black forms on android, when no Gorilla component is used
DescriptionIf GorillaViewport is on the main form, things so far work on Android. however if the main form does not have gorilla components, and gorilla components are on a different form, when the app runs the main form is completely black. Components are there, for example if there is a Tedit that I manage to touch, the keyboard does appear - but it's all black. Remove all references to Gorilla components on that second form, and things (tbuttons, tedits, tmemos, etc) display normally on the main form.
TagsNo tags attached.
Delphi-Version 10.3.3
OpenGLVersionOpenGL 4.3

Activities

administrator

2020-08-05 10:10

administrator   ~0000091

By refactoring rendering pipeline, regarding WBOIT rendering, the default FBO handling changed.
So at some situations no default FBO was bounded. This leads to black context rendering.
> Testing not finished yet!

The black forms also appeared on windows platform under specific circumstances.
On evaluating FMX TEffect component usage on TGorillaViewport some problems occured.
The main problem is the different texture memory alignment of DirectX and OpenGL.
On windows Gorilla3D still uses bitmaps handled by D3D canvas and DirectX. This allocates image buffers with 32 Byte row alignment.
Instead in Gorilla3D and OpenGL we use 1 Byte row alignment. So the DirectX-OpenGL interaction is not fully supported.

I've implemented a dirty hack, because FMX internal canvas and filter classes are not allowed to be overwritten.
The solutions adjusts viewport control width to a multiple of 32. This leads to larger rendering area on odd control width.
Other FMX controls will then be not adjusted correctly anymore.

Until Embarcadero do not allow to overwriter certain code, this problems remains unsolved.

administrator

2020-08-05 13:01

administrator   ~0000092

Another bug detected. TBlendFactor and TBlendEquationFunc enumeration types used OpenGL constant values directly.
On FMX no blending settings are available by default.
So TBlendFactor and TBlendEquationFunc values were zero, which lead to invalid OpenGL values.
I separated enumeration values from OpenGL values and introduces conversion methods in TBlendFactorHelper and TBlendEquationFuncHelper classes.
Also default values for FMX are now set.

Issue History

Date Modified Username Field Change
2020-05-09 10:06 administrator New Issue
2020-05-09 10:06 administrator Status new => assigned
2020-05-09 10:06 administrator Assigned To => administrator
2020-08-05 10:10 administrator Note Added: 0000091
2020-08-05 13:01 administrator Status assigned => resolved
2020-08-05 13:01 administrator Resolution open => fixed
2020-08-05 13:01 administrator Fixed in Version => 0.8.2.x
2020-08-05 13:01 administrator Note Added: 0000092