加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何使用Delphi XE5在Android上访问OpenGL渲染上下文?

发布时间:2020-12-15 03:34:01 所属栏目:大数据 来源:网络整理
导读:在使用Delphi XE5开发应用程序时,如何在 Android设备上创建OpenGL渲染上下文? 基本上我不知道从哪里开始.还没有OpenGL的例子. 我期待的存在: 某种类型的事件(Panel.OnRender)将提供一个可以调用OpenGL调用的现有上下文. 可以放在表单设计器中的通用TOpenGL
在使用Delphi XE5开发应用程序时,如何在 Android设备上创建OpenGL渲染上下文?

基本上我不知道从哪里开始.还没有OpenGL的例子.

我期待的存在:

>某种类型的事件(Panel.OnRender)将提供一个可以调用OpenGL调用的现有上下文.
>可以放在表单设计器中的通用TOpenGLSurface控件
>在运行时在主窗体上创建上下文的方法.

从我迄今为止的研究中,TWindowManager.Render可以访问OpenGL调用,并使用它们来渲染弹出窗口.

编辑:将一个计时器添加到窗体并调用此过程将绿色填充屏幕,这意味着GL上下文已经存在:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  glClearColor(0,1,0);
  glClear(GL_DEPTH_BUFFER_BIT or GL_STENCIL_BUFFER_BIT or GL_COLOR_BUFFER_BIT);
  eglSwapBuffers(TCustomAndroidContext.SharedDisplay,TCustomAndroidContext.SharedSurface);
end;

问题是 – 如何正确处理它,在受控环境中的定时器的cos渲染绝对是一个坏主意.

解决方法

新的细节显示,我将追加到这个答案.

尝试1

将一个计时器添加到表单并调用此过程将绿色填充屏幕,TCustomAndroidContext.SharedSurface); end;

当然,在控制环境下渲染定时器绝对是一个坏主意.应用程序在最小化/最大化时保持闪烁.

尝试2

我已经覆盖了TContextAndroid类(制作了一个Delphi单元的副本,并将其放在我的应用程序文件夹中).我可以将自定义代码注入DoEndScene方法,并且已经成功执行了它 – 对于这个测试只是一个简单的glClear(GL_COLOR_BUFFER_BIT);这已经用颜色填充了整个应用程序区域.这一次,应用程序没有闪烁,表现得像正常一样.

尝试3

这是代码,使其工作,并不看起来很黑客:

types
  TMyForm = class(TForm3D)
    procedure Form3DRender(Sender: TObject; Context: TContext3D);
  end;

implementation

//Event handler for TForm.OnRender
procedure TMyForm.Form3DRender(Sender: TObject; Context: TContext3D);
begin
  glClearColor(1,1);
  glClear(GL_COLOR_BUFFER_BIT);
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读