Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tipsandtricks [2019/10/03 13:58] – [Changing Position, RotationAngle or Scale] admin | tipsandtricks [2019/10/03 14:05] – [Changing Position, RotationAngle or Scale] admin | ||
---|---|---|---|
Line 23: | Line 23: | ||
==== Changing Position, RotationAngle or Scale ==== | ==== Changing Position, RotationAngle or Scale ==== | ||
- | Changing one of the transformation settings or visual properties of a 3D scene object initializes rendering | + | Changing one of the transformation settings or visual properties of a 3D scene object initializes rendering |
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 okey for many applications, | ||
+ | |||
+ | While " | ||
+ |