Tuesday, April 25, 2017

EGL PBuffers vs Pixmaps differences

EGL에서 생성할수 있는 EGLSurface는 다음과 같이 3가지 종류이다.

1) Window Surface
    - On-Screen Rendering Surfaces를 위해 사용
    - 리눅스의 framebuffer에 해당 할 것이다
    - eglCreateWindowSurface() 사용
2) Pbuffers Surface
    - Off-Screen Rendering Surfaces를 위해 사용
    - Graphic 메모리나 GPU 메모리에 생성
    - eglCreatePbufferSurface() 사용
    - Client(OpenGL ES)에서 생성한 Pbuffer를 EGL의 Pbuffer와 binding 할 때 사용은 eglCreatePbufferFromClientBuffer() 를 사용
3) Pixmaps Surface
    - Off-Screen Rendering Surfaces 를 위해 사용하고
      Graphic 메모리나 GPU 메모리에 생성한다는 점에서
      Windows Surface와 다름
    - OpenGLES 및 OpenVG와 같은 Client APIs 외의
       APIs를 지원한다는 점에서 Pbuffer Surface와 다름
    - Android의 TextureSurface에서 사용 (SurfaceTextureClient, SurafceTexureLayer 클래스)

Pixmaps는 PBuffers와 다르게 다른 Client APIs를 사용가능하다고 하는데 이는 buffer의 포인터가 노출이 되어 있어서 다른 클라이언트도 접근이 가능하다는 뜻이다. 예를 들어 C언어에서 포인터로 접근하여 직접 픽셀을 수정이 가능.

No comments:

Post a Comment