我最近将一个大型程序从Delphi移到了Lazarus.大多数错误都被整理出来,我对Lazarus / FPC印象深刻.但有一个我无法弄清楚的错误. 我的应用程序有一个主要的OpenGL窗口和一些补充形式.最初,我
我的应用程序有一个主要的OpenGL窗口和一些补充形式.最初,我使用Delphi VCL设计了这些表格,现在我已将它们移到了Lazarus LCL上.
编辑:OpenGL窗口目前不是拼箱形式.它是使用Win32调用实现的,并且拥有自己的消息循环.
根据以下代码行,所有表单都被视为主OpenGL窗口的子窗口:
Form.ParentWindow := OpenGLWindow.h_wnd;
不幸的是,当表单由OpenGL窗口拥有时,它们就会消失.当然,OpenGL窗口以30fps的帧速率刷新,这导致了屏幕缓冲问题.表单正在渲染,然后由OpenGL窗口呈现在顶部.
如果表单不属于主窗口,则问题得以解决.不幸的是,更改所有权对最终用户来说是非常具有破坏性的(菜单会在程序后面丢失等).
所以我想知道,我从哪里开始这样的问题?我是否需要确保表单中有自己的屏幕缓冲区才能呈现内部,或者这是错误的想法?
澄清一些事情:我使用的是拼版的Win32版本,而不是QT或类似的东西.
此外,我尝试将表单设置为双缓冲,以查看它是否有用,但事实并非如此.
看一下组件附带的样品.
/ BlueIcaro