delphi – 结合Lazarus LCL和OpenGL
发布时间:2020-12-15 09:12:24 所属栏目:大数据 来源:网络整理
导读:我最近将一个大型程序从Delphi移到了Lazarus.大多数错误都被整理出来,我对Lazarus / FPC印象深刻.但有一个我无法弄清楚的错误. 我的应用程序有一个主要的OpenGL窗口和一些补充形式.最初,我使用Delphi VCL设计了这些表格,现在我已将它们移到了Lazarus LCL上.
我最近将一个大型程序从Delphi移到了Lazarus.大多数错误都被整理出来,我对Lazarus / FPC印象深刻.但有一个我无法弄清楚的错误.
我的应用程序有一个主要的OpenGL窗口和一些补充形式.最初,我使用Delphi VCL设计了这些表格,现在我已将它们移到了Lazarus LCL上. 编辑:OpenGL窗口目前不是拼箱形式.它是使用Win32调用实现的,并且拥有自己的消息循环. 根据以下代码行,所有表单都被视为主OpenGL窗口的子窗口: Form.ParentWindow := OpenGLWindow.h_wnd; 不幸的是,当表单由OpenGL窗口拥有时,它们就会消失.当然,OpenGL窗口以30fps的帧速率刷新,这导致了屏幕缓冲问题.表单正在渲染,然后由OpenGL窗口呈现在顶部. 如果表单不属于主窗口,则问题得以解决.不幸的是,更改所有权对最终用户来说是非常具有破坏性的(菜单会在程序后面丢失等). 所以我想知道,我从哪里开始这样的问题?我是否需要确保表单中有自己的屏幕缓冲区才能呈现内部,或者这是错误的想法? 澄清一些事情:我使用的是拼版的Win32版本,而不是QT或类似的东西. 解决方法
尝试使用Lazarus附带的OpenGlControl.从componentes文件夹安装包.这些组件的工作方式类似于Tpaint,但它是一个opengl上下文.将它放在任何表单上,这个表单将是一个opengl上下文,但也是一个表单,可以移动,调整大小等.
看一下组件附带的样品. / BlueIcaro (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |