Android Dev Intro - Opengl ES and EGL

转载 2016年05月31日 17:33:59




Opengl ES define platform independent GL draw graphics instructions
EGL define display, context and surface.
Display (EGLDisplay) is the abstract of display device
Surface (EGLSurface) is the abstract of memory area used to store graphics
Context (EGLContext) is used to save state information of Opengl ES


General Steps.
1. acquire EGLDisplay object
   EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
   
2. init EGLDisplay object
   eglInitialize(display, 0, 0);
   
3. acquire EGLConfig object
   eglChooseConfig(display, attribs, nullptr,0, &numConfigs);
   auto supportedConfigs = new EGLConfig[numConfigs];
   assert(supportedConfigs);
   eglChooseConfig(display, attribs, supportedConfigs, numConfigs, &numConfigs);
   
   auto i = 0;
   for (; i < numConfigs; i++) {
       auto& cfg = supportedConfigs[i];
       EGLint r, g, b, d;
       if (eglGetConfigAttrib(display, cfg, EGL_RED_SIZE, &r)   &&
           eglGetConfigAttrib(display, cfg, EGL_GREEN_SIZE, &g) &&
           eglGetConfigAttrib(display, cfg, EGL_BLUE_SIZE, &b)  &&
           eglGetConfigAttrib(display, cfg, EGL_DEPTH_SIZE, &d) &&
           r == 8 && g == 8 && b == 8 && d == 0 ) {
           config = supportedConfigs[i];
           break;
       }
   }
   if (i == numConfigs) {
       config = supportedConfigs[0];
   }
   
   eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format);
   
4. Create EGLContext object
   context = eglCreateContext(display, config, NULL, NULL);
   
5. Create EGLSurface object
   surface = eglCreateWindowSurface(display, config, engine->app->window, NULL);


6. bind EGLSurface with EGLContext
   eglMakeCurrent(display, surface, surface, context);


7. draw graphics
    glClearColor(((float)engine->state.x)/engine->width, engine->state.angle,
                 ((float)engine->state.y)/engine->height, 1);
    glClear(GL_COLOR_BUFFER_BIT);


    eglSwapBuffers(engine->display, engine->surface);

8. unbind EGLSurface with EGLContext
   eglMakeCurrent(engine->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
   
9. releas EGLContext object
   eglDestroyContext(engine->display, engine->context);
   
10. release EGLSurface object
   eglDestroySurface(engine->display, engine->surface);
   
11. Destory EGLDisplay object
   eglTerminate(engine->display);
   engine->display = EGL_NO_DISPLAY;
   engine->context = EGL_NO_CONTEXT;
   engine->surface = EGL_NO_SURFACE;

在Android中用ndk层egl/opengl es显示java层打开的图像

本文介绍了如何在Android的java层打开一张图片,并在native层进行渲染的方法。可以分为两个部分: 1. 在java层打开图片并通过jni接口将图像数据传给native层; 2. 在nd...

Android OpenGL ES与EGL

1 名词解释  OpenGL ES (OpenGL for Embedded Systems,以下简称OpenGL)  OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设...
  • yuyin86
  • yuyin86
  • 2012年09月02日 12:54
  • 865

Android 的OpenGL ES与EGL

原文地址:http://hi.baidu.com/aokikyon/item/70e973d043bad21c21e2500d Android 的OpenGL ES与EGL Android Ope...

利用EGL在android上使用C/C++写OpenGL ES程序

使用Native代码GLSurfaceView 在Java层使用EGL 在native层使用EGL 很多教程都是在C/C++写的OpenGL的代码,其中有很多优秀的框架,除了前面提过的Assimp库外...

android graphic(2)—EGL和OpenGL ES

http://blog.csdn.net/lewif/article/details/50532011 目录(?)[+] Android的本地窗口FramebufferNat...

OpenGL ES:EGL接口解析与理解

转自:http://imgtec.eetrend.com/blog/6839 本文介绍:EGL接口与初始化介绍,Android系统上EGL的一些理解 一.EGL 介绍 通俗上讲,Op...

OpenGL ES EGL介绍

前面已经在android平台上使用OpenGL ES的API了解了如何创建3D图形已经使用FBO渲染到纹理进行一些其他的操作,起初我学习OpenGL ES的目的就是为了研究Android平台上录制屏幕...

Modern OpenGL ES: ndk编程——画一个三角形之创建EGL窗口

上一节我们 知道了如何用ndk 来创建一个 Activity 这一节,我们来创建 GL 的窗口 上一节已经知道, Khronos Group 为我们提供了 EGL API 来帮助我们创建 窗口,同...

【OpenGL ES】EGL简介

【参考-khronos-egl】https://www.khronos.org/egl 【参考-khronos-egl-api(目前共34个API)】https://www.khronos.org/...
  • iEearth
  • iEearth
  • 2017年05月04日 20:28
  • 1520

OpenGL ES:EGL接口解析与理解

本文介绍:EGL接口与初始化介绍,Android系统上EGL的一些理解 一.EGL 介绍 通俗上讲,OpenGL是一个操作GPU的API,它通过驱动向GPU发送相关指令,控制图形渲染管线状态机的运...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Dev Intro - Opengl ES and EGL
举报原因:
原因补充:

(最多只允许输入30个字)