在 Delphi 的 FireMonkey 底下写 APP,如果想要 3D 效果,当然它提供了直接的支持,但底层实际上是使用了 OpenGL ES。
问题是,如果只是采用 FireMonkey 的 3D 框架,使用它的控件,有一些效果可能做不出来。如果自己直接调用 OpenGL ES 的函数,那就没问题。
如何在 APP 里面直接调用 OpenGL ES 的函数呢?请继续往下看:
1. 首先,建立一个 3D Form 的 APP(备注:基于 FireMonkey),设置编译目标是安卓或 iOS;
2. 在这个 3D Form 里面,引用相关单元:
uses
// 这里是引用 OpenGL ES 的单元,FireMonkey 自带的。目标平台一定是安卓或 iOS。如果是 Windows,这里不行。
FMX.Context.GLES,
{$IFDEF ANDROID}
Androidapi.Gles, FMX.Context.GLES.Android,
, FMX.Platform.Android, Androidapi.Gles2, Androidapi.JNI.OpenGL,
Androidapi.Glesext, Androidapi.Gles2ext;
{$ENDIF}
{$IFDEF IOS}
iOSapi.OpenGLES, FMX.Context.GLES.iOS,
, iOSapi.GLKIT, FMX.Platform.iOS;
{$ENDIF}
有了以上的引用。接下来就可以在代码里面直接使用 OpenGL ES 的函数了。比如,3D Form 有一个 OnRender 事件。在该事件里面可以添加代码:
procedure TForm2.Form3DRender(Sender: TObject; Context: TContext3D);
begin
glClearColor(1, 1, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
end;编译发布到手机上,测试通过。
注意:这个只能是 Android 或 iOS,在 Windows 底下,上述 use 的 FMX.Context.GLES 不存在,FireMonkey 木有为 Windows 准备 OpenGL ES 相关的东西。
原文:
http://delphi.org/2014/04/opengl-es-support-on-mobile-with-xe6/
本文介绍如何在Delphi的FireMonkey框架下利用OpenGLES实现自定义3D效果。适用于Android和iOS平台,通过引入特定单元并在OnRender事件中调用OpenGLES函数来实现。
3302

被折叠的 条评论
为什么被折叠?



