you can see how the renderer for lcl is implemented in zengl
Это не совсем правильная реализация. Но работать будет. ZenGL считается однопотоковым приложением и данные не защищены от многопотока. Лучше всего реализовать в таких случаях защиту данных в многопоточных приложениях.
В дальнейшем я буду думать над правкой ZenGL для многопоточных приложений. И, вернее всего, потом не нужны будут данные ограничения для таймера в каждой вызываемой процедуре/функции.
Google translate:
This is not a completely correct implementation. But it will work. ZenGL is considered a single threaded application and the data is not thread safe. In such cases, it is best to implement data protection in multi-threaded applications.
In the future I will think about editing ZenGL for multi-threaded applications. And, most likely, then these restrictions for the timer in each called procedure/function will not be needed.