Metal 공부~ㅇ~

Metal - MTLClearColor 란? (Metal by tutorials)

감._.자 2021. 12. 29. 02:05
728x90
반응형

https://developer.apple.com/documentation/metal/mtlclearcolor

 

Apple Developer Documentation

 

developer.apple.com

MetalClearColor는 MTKView로 선언한 view의 색을 지정 할 때 사용한다!

위의 Documentation에 따라 더 설명해보겠음!

1.  MTLClearColor 생성자

초기 선언 방법

1) init() 

: 새로운 컬러의 structure을 반환한다

2) init(red: Double, green: Double, blue: Double, alpha: Double)

: red, green, blue, alpha 값을 사용해서 새로운 컬러의 structure를 반환한다. alpha 값은 투명도를 나타낸다.

 

2. MTLClearColor 생성자 매개변수 설명

생성자 매개변수 설명

각 매개변수들은 RGBA 각각에 해당하는 값을 나타내고 모두 Double형을 가진다. 

 

3. Specifying clearing value(색변경하기)

1) var clearColor: MTLClearColor

: color attachment을 clearing 할 때 사용하는 것이다. ( clearing은 structure의 색을 변경할때 사용한다는 말인듯)

그리고 clearColor의 기본값은 (0.0, 0.0, 0.0, 1.0)(검은색) 이다. 

참고: https://developer.apple.com/documentation/metal/mtlrenderpasscolorattachmentdescriptor/1437924-clearcolor

 

2) func MTLClearColorMake(Double, Double, Double, Double) -> MTLClearColor

: color attachment을 clearing하는데에 사용되는 색상 값을 반환한다. (아래 4 번에서 추가 설명하겠음!)

 

4. MTLClearColorMake(_:_:_:_:) 

https://developer.apple.com/documentation/metal/1437971-mtlclearcolormake

function MTLClearColorMake(_:_:_:_:) 

뜯어보면 이 함수를 호출할 때는 매개변수의 변수명을 작성하지 않아도 된다! 

Swift에서 _(underscore)은 함수를 호출할 때 매개변수의 변수명을 생략해도 된다는 것을 의미함.

예를들어 _가 없었다면

MTLClearColor.MTLClearColorMake(red: 1.0, green:1.0, blue:1.0, alpha:1.0) 이런식으로 작성해야한다.

지금은 _가 있기때문에

MTLClearColor.MTLClearColorMake(1.0, 1.0, 1.0, 1.0) 이렇게 호출하면 된다.

 

 

예시 코드 (Metal by tutorials 책 참고)

import PlaygroundSupport
import MetalKit

// GPU를 사용할 수 있는지 확인하기
// 만약 안된다면 iOS Playground로 프로젝트를 생성해서 그렇다(iOS 시뮬레이터에서는 지원하지 않는다)
// -> macOS playground로 프로젝트 다시 생성하기
guard let device = MTLCreateSystemDefaultDevice() else{
    fatalError("GPU is not supported")
}

// 아래 코드는 Metal render을 하기위한 MTKView를 나타낸다. 
// MTKView는 MacOS에 있는 NSView와 iOS에 있는 UIView의 서브클래스이다.
let frame = CGRect(x:0,y:0,width:600,height:600)
let view = MTKView(frame: frame,device: device)

//MTLClearColor: RGBA 값을 나타낸다. 아래는 크림색을 나타냄.
//color값들은 clearColor에 저장되고 뷰의 색을 설정할 때 사용된다.
view.clearColor = MTLClearColor(red:1,green: 1,blue: 0.8, alpha: 1)

코드설명

view.clearColor = MTLClearColor(red:1,green: 1,blue: 0.8, alpha: 1)

MTKView 클래스 객체인 view에서 컬러값을 의미하는 변수인 clearColor에 접근한다(view.clearColor 로 접근).

그리고 view속성의 clearColor에 MTLClearColor(red:1,green: 1,blue: 0.8, alpha: 1)를 대입하여 새로운 색으로 변경해준다.

728x90
반응형