| @@ -1838,7 +1838,10 @@ type | |||||
| function InitOpenGLES(const aOpenGLESLibName: String = LIBNAME_OPENGLES; aEGLLibName: String = LIBNAME_EGL): Boolean; | function InitOpenGLES(const aOpenGLESLibName: String = LIBNAME_OPENGLES; aEGLLibName: String = LIBNAME_EGL): Boolean; | ||||
| function CreateRenderingContext(const aDisplayType: EGLNativeDisplayType; const aWindowType: PEGLNativeWindowType; const aAttributes: PEGLint): TdglRenderContext; | |||||
| function CreateRenderingContext(const aDisplayType: EGLNativeDisplayType; | |||||
| const aWindowType: PEGLNativeWindowType; | |||||
| const aConfigAttribs: PEGLint; | |||||
| const aContextAttribs: PEGLint): TdglRenderContext; | |||||
| procedure DestroyRenderingContext(const aContext: TdglRenderContext); | procedure DestroyRenderingContext(const aContext: TdglRenderContext); | ||||
| function ActivateRenderingContext(const aContext: TdglRenderContext): Boolean; | function ActivateRenderingContext(const aContext: TdglRenderContext): Boolean; | ||||
| function DeactivateRenderingContext(const aContext: TdglRenderContext): Boolean; | function DeactivateRenderingContext(const aContext: TdglRenderContext): Boolean; | ||||
| @@ -1949,7 +1952,8 @@ begin | |||||
| raise EeglError.Create(aMsg + ' ErrorCode: 0x' + IntToHex(err, 8), err); | raise EeglError.Create(aMsg + ' ErrorCode: 0x' + IntToHex(err, 8), err); | ||||
| end; | end; | ||||
| function CreateRenderingContext(const aDisplayType: EGLNativeDisplayType; const aWindowType: PEGLNativeWindowType; const aAttributes: PEGLint): TdglRenderContext; | |||||
| function CreateRenderingContext(const aDisplayType: EGLNativeDisplayType; const aWindowType: PEGLNativeWindowType; | |||||
| const aConfigAttribs: PEGLint; const aContextAttribs: PEGLint): TdglRenderContext; | |||||
| var | var | ||||
| ConfigCount: EGLint; | ConfigCount: EGLint; | ||||
| Config: EGLConfig; | Config: EGLConfig; | ||||
| @@ -1965,15 +1969,18 @@ begin | |||||
| if (eglInitialize(result.Display, nil, nil) <> EGL_TRUE) then | if (eglInitialize(result.Display, nil, nil) <> EGL_TRUE) then | ||||
| RaiseEglError('unable to initialize egl.'); | RaiseEglError('unable to initialize egl.'); | ||||
| if (eglChooseConfig(result.Display, aAttributes, @Config, 1, @ConfigCount) <> EGL_TRUE) or | |||||
| (ConfigCount <> 1) then | |||||
| if (eglChooseConfig(result.Display, aConfigAttribs, @Config, 1, @ConfigCount) <> EGL_TRUE) or | |||||
| (ConfigCount < 1) then | |||||
| RaiseEglError('unable to get suitable config.'); | RaiseEglError('unable to get suitable config.'); | ||||
| if (eglBindAPI(EGL_OPENGL_ES_API) <> EGL_TRUE) then | |||||
| RaiseEglError('unable to get an appropriate EGL frame buffer configuration.'); | |||||
| result.Surface := eglCreateWindowSurface(result.Display, Config, aWindowType, nil); | result.Surface := eglCreateWindowSurface(result.Display, Config, aWindowType, nil); | ||||
| if (result.Surface = EGL_NO_SURFACE) then | if (result.Surface = EGL_NO_SURFACE) then | ||||
| RaiseEglError('unable to create window surface.'); | RaiseEglError('unable to create window surface.'); | ||||
| result.Context := eglCreateContext(result.Display, Config, EGL_NO_CONTEXT, nil); | |||||
| result.Context := eglCreateContext(result.Display, Config, EGL_NO_CONTEXT, aContextAttribs); | |||||
| if (result.Context = EGL_NO_CONTEXT) then begin | if (result.Context = EGL_NO_CONTEXT) then begin | ||||
| eglDestroySurface(result.Display, result.Surface); | eglDestroySurface(result.Display, result.Surface); | ||||
| RaiseEglError('unable to create context.'); | RaiseEglError('unable to create context.'); | ||||