egl的最基本流程代码,记录一下。
void egl_demo()
{
EGLDisplay display = eglGetDisplay (EGL_DEFAULT_DISPLAY); //获取显示器
eglInitialize(display , 0, 0); //初始化显示器
EGLConfig config;
eglChooseConfig(display , attribs, & config, 1, &numConfigs ); //初始化配置
EGLSurface surface = eglCreateWindowSurface(display, config, ANativeWindow , NULL); //创建surface
EGLContext context = eglCreateContext (display, config, NULL , NULL);//创建场景
eglMakeCurrent (display, surface, surface , context);//绑定线程
while(true){
//opengl绘制
glxx();
eglSwapBuffers(display , surface );
}
eglDestroyContext( display , context );//销毁surface
eglDestroySurface(display , surface );//销毁场景
eglTerminate(display );
}
因为这个点比较大后续会更新:
基本概念:
一.离屏(offscreen)渲染
OpenGL中,GPU屏幕渲染有两种方式:
(1)On-Screen Rendering (当前屏幕渲染)
指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区进行。
(2)Off-Screen Rendering (离屏渲染)
指的是在GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作。
当前屏幕渲染不需要额外创建新的缓存,也不需要开启新的上下文,相对于离屏渲染性能更好。但是受当前屏幕渲染的局限因素限制(只有自身上下文、屏幕缓存有限等),当前屏幕渲染有些情况下的渲染解决不了的,就使用到离屏渲染。
网友评论