-
Hello MetalOpenGL/iOS_Metal 2018. 10. 6. 04:41
안녕하세요 dely입니다:)
iOS에서 OpenGL 역할을 하는 Metal을 공부하면서 정리해보려고 합니다.
> Metal의 특징
- Apple framework로 GPU 접근에 빠른 성능을 냅니다.
- iOS 자체 3D 그래픽 기술입니다.
- OpenGL보다 단위 시간 당 호출 속도가 10배 빠르다고 합니다. (Apple 칩 성능을 극도로 끌어올리는 기술)
- shader는 precompile 하기 때문에 빠른 성능을 낼 수 있습니다. (C++ 기반)
> Metal 사용방법
- Swift 프로젝트에 적용하기 위해 MetalKit을 사용합니다.
- texture를 화면에 출력하기 위해 UIView를 상속받은 MTKView 클래스를 사용합니다.
- 이미지 프로세싱 작업을 위해 다음과 같은 몇가지 step을 거치게 됩니다.
1. Device 생성 (MTLDevice) : GPU 인터페이스로서의 역할을 위해Command Queue, Rendering State 및 Library와 같은 객체를 만드는 방법을 제공합니다.
2. Library 생성 (MTLLibrary) : compute shader(kernel function) 의 레파지토리 역할을 한다고 합니다. (아직 잘모르겠음..)
3. Command Queue 생성 : GPU가실행시킬 Command Buffer의 list를 담아두기 위함입니다. 생성에 큰 비용이 들기 때문에 재사용을 합니다.
4. Pipeline State 생성 : GPU에서 프로세싱 될 data들을 준비해두는 역할을 담당합니다.
1) Data preparation for the GPU
2) Vertex processing
3) Primitive assambly
4) Fragment shading
5) Raster Output
5. Command Buffer 생성 : 한 프레임을 렌더링 하기 위해 필요한 명령들을 저장합니다.
6. Command Encoder 생성 : 작성한 코드를 바이트 코드로 변환시키기 위함입니다.
반응형'OpenGL > iOS_Metal' 카테고리의 다른 글
Drawing Primitives (0) 2019.07.03 Hello Again, Metal (0) 2019.07.01 Add red triangle (0) 2018.10.13 Refactoring Fill the Yellow texture (0) 2018.10.12 Fill the Yellow texture (0) 2018.10.07