# See the License for the specific language governing permissions and
# limitations under the License.
-# EGL is an interface between the rendering APIs OpenGL, OpenGL ES, etc.
-# and the native windowing system.
+# Interface between rendering APIs (OpenGL, OpenGL ES, etc.) and the native windowing system.
#
# Most services of this module are a direct wrapper of the underlying
# C library. If a method or class is not documented in Nit, refer to
fun is_valid: Bool `{ return self != EGL_NO_DISPLAY; `}
fun initialize: Bool `{
- EGLBoolean r = eglInitialize(self, NULL, NULL);
- if (r == EGL_FALSE) {
- fprintf(stderr, "Unable to eglInitialize");
- return 0;
- }
- return 1;
+ return eglInitialize(self, NULL, NULL);
`}
fun major_version: Int `{
}
configs = (EGLConfig*)malloc(sizeof(EGLConfig)*n_configs);
-
+
r = eglChooseConfig(self, c_attribs, configs, n_configs, &n_configs);
if (r == EGL_FALSE) {
}
`}
+ private fun report_egl_error(cmsg: CString)
+ do
+ var msg = cmsg.to_s
+ print "libEGL error: {msg}"
+ end
+
# Can be used directly, but it is preferable to use a `EGLConfigAttribs`
fun config_attrib(config: EGLConfig, attribute: Int): Int `{
EGLint val;
`}
fun make_current(draw, read: EGLSurface, context: EGLContext): Bool `{
- if (eglMakeCurrent(self, draw, read, context) == EGL_FALSE) {
- fprintf(stderr, "Unable to eglMakeCurrent");
- return 0;
- }
- return 1;
+ return eglMakeCurrent(self, draw, read, context);
`}
# Can be used directly, but it is preferable to use a `EGLSurfaceAttribs`
end
end
- private fun query_string(name: Int): String import NativeString.to_s `{
- return NativeString_to_s((char *)eglQueryString(self, name));
+ private fun query_string(name: Int): String import CString.to_s `{
+ return CString_to_s((char *)eglQueryString(self, name));
`}
fun vendor: String do return query_string(0x3053)
fun version: String do return query_string(0x3054)
- fun extensions: Array[String] do return query_string(0x3055).split_with(" ")
+ fun extensions: Array[String] do return query_string(0x3055).trim.split_with(" ")
fun client_apis: Array[String] do return query_string(0x308D).split_with(" ")
end
end
-redef class Object
- private fun report_egl_error(cmsg: NativeString)
- do
- var msg = cmsg.to_s
- print "libEGL error: {msg}"
- end
-end
-
fun egl_bind_opengl_api: Bool `{ return eglBindAPI(EGL_OPENGL_API); `}
fun egl_bind_opengl_es_api: Bool `{ return eglBindAPI(EGL_OPENGL_ES_API); `}
fun egl_bind_openvg_api: Bool `{ return eglBindAPI(EGL_OPENVG_API); `}
+
+# Handle to the default display to use with EGL
+fun egl_default_display: Pointer `{ return EGL_DEFAULT_DISPLAY; `}