CAMetalLayer 분석
CAMetalLayer 사용
device: MTLDevice 객체를 만들어야 합니다.
pixelFormat: MTLTExture의 픽셀 형식, 현재 MTLPixelFormatBGRA8Unorm 및 MTLPixelFormatBGRA8Unorm 지원sRGB 두 가지.
코드 예:
-(instancetype)initWithCoder:(NSCoder *)aDecoder {
if( self = [super initWithCoder:aDecoder] ){
self.mDevice = MTLCreateSystemDefaultDevice();
self.mCommandQueue = [self.mDevice newCommandQueue];
self.metalLayer.device = self.mDevice;
self.metalLayer.pixelFormat = MTLPixelFormatBGRA8Unorm;
}
return self;
}
framebuffer Only: YES means MTLTExture는 렌더링을 위해 특별히 최적화된 것으로 Texture에 대한 Read/Write/Sampling 등의 조작을 지원할 수 없으며 NO 반대입니다.Texture의 픽셀을 조작해야 하는 필연적인 이유가 없으면 YES로 설정해야 합니다
nextDrawable: 렌더링할 drawable 객체를 가져옵니다.
코드 예:
id<CAMetalDrawable> drawable = [self.metalLayer nextDrawable];
id<MTLTexture> texture = drawable.texture;
MTLRenderPassDescriptor *passDescriptor = [MTLRenderPassDescriptor renderPassDescriptor];
passDescriptor.colorAttachments[0].texture = texture;
passDescriptor.colorAttachments[0].loadAction = MTLLoadActionClear;
passDescriptor.colorAttachments[0].storeAction = MTLStoreActionStore;
passDescriptor.colorAttachments[0].clearColor = MTLClearColorMake(1, 0, 1, 1);
id<MTLCommandBuffer> commandBuffer = [self.mCommandQueue commandBuffer];
id<MTLRenderCommandEncoder> commandEncoder = [commandBuffer renderCommandEncoderWithDescriptor:passDescriptor];
[commandEncoder endEncoding];
[commandBuffer presentDrawable:drawable];
[commandBuffer commit];
Sample Code:
https://github.com/volvet/metalDemo/tree/master/ClearTheScreen
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.