Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
tipsandtricks [2019/10/03 13:58] – [Polygon count] admin | tipsandtricks [2019/10/03 14:08] – [Threading] admin | ||
---|---|---|---|
Line 21: | Line 21: | ||
The number of polygons you should use depends on the quality you require and the platform you are targeting. For mobile devices, somewhere between 300 and 1500 polygons per mesh will give good results, whereas for desktop platforms the ideal range is about 1500 to 4000. You may need to reduce the polygon count per mesh if the game has lots of characters on screen at any given time. | The number of polygons you should use depends on the quality you require and the platform you are targeting. For mobile devices, somewhere between 300 and 1500 polygons per mesh will give good results, whereas for desktop platforms the ideal range is about 1500 to 4000. You may need to reduce the polygon count per mesh if the game has lots of characters on screen at any given time. | ||
- | ==== Changing Position, RotationAngle or Scale ==== | + | ===== Changing Position, RotationAngle or Scale ===== |
- | Changing one of the transformation settings of a 3D scene object initializes rendering | + | Changing one of the transformation settings |
So, when you're manipulating more than one object or property this could lead to very bad performance. | So, when you're manipulating more than one object or property this could lead to very bad performance. | ||
- | Due to that, GorillaViewport provides the BeginUpdate and EndUpdate methods. | + | |
+ | Therefor we need some way of grouping those operations and to prevent FMX from updating each time. | ||
+ | |||
+ | Due to that, GorillaViewport provides the BeginUpdate() and EndUpdate() methods. | ||
Encapsulate your transformations to increase performance. | Encapsulate your transformations to increase performance. | ||
Line 40: | Line 43: | ||
end; | end; | ||
</ | </ | ||
+ | |||
+ | ===== Threading ===== | ||
+ | |||
+ | It is not uncommon to use a thread to compute visual property values. But because FMX (and also Gorilla3D) only runs in main thread, we need to synchronize somehow. | ||
+ | |||
+ | Synchronization needs to be threadsafe, so everyone uses TThread.Synchronize(nil, | ||
+ | That's okey for many applications, | ||
+ | |||
+ | While " | ||
+ |