現在、Metal アプリで視覚的なポップ音を追跡していますが、バックバッファではなく、フレームバッファに直接描画しているためだと考えています。
// this is when I've finished passing commands to the render buffer and issue the draw command. I believe this sends all the images directly to the framebuffer instead of using a backbuffer
[renderEncoder endEncoding];
[mtlCommandBuffer presentDrawable:frameDrawable];
[mtlCommandBuffer commit];
[mtlCommandBuffer release];
//[frameDrawable present]; // This line isn't needed (and I believe is performed by presentDrawable
後で何度かグーグルで検索しましたが、金属のバックバッファに関するドキュメントは見つかりませんでした。自分でロールバックできることはわかっていますが、メタルがバック バッファーをサポートしていないなんて信じられません。
CAMetalLayer オブジェクトをどのようにセットアップしたかを示すコード スニペットを次に示します。
+ (id)layerClass
{
return [CAMetalLayer class];
}
- (void)initCommon
{
self.opaque = YES;
self.backgroundColor = nil;
...
}
-(id <CAMetalDrawable>)getMetalLayer
{
id <CAMetalDrawable> frameDrawable;
while (!frameDrawable && !frameDrawable.texture)
{
frameDrawable = [self->_metalLayer nextDrawable];
}
return frameDrawable;
}
CAMetalLayer オブジェクトでバックバッファを有効にすることはできますか? それとも独自にロールバックする必要がありますか?