Как получить текущую текущую текстуру, используемую MTKView / UIView / NSView

Я хочу скопировать экран MTKView (или UIView, или NSView). Как получить текущий объект для рисования (или текстуру), фактически используемый для рисования содержимого этого MTKView? Если я использую currentDrawable, я получаю текстуру, которая не актуальна (уже слишком старая).


person zeus    schedule 01.12.2019    source источник
comment
Вам нужна текстура до или после рендеринга?   -  person Hamid Yusifli    schedule 01.12.2019
comment
@ 0xBFE1A8: после рендеринга :)   -  person zeus    schedule 01.12.2019


Ответы (1)


Вы можете зарегистрировать обработчик завершения:

[commandBuffer addCompletedHandler:^(id<MTLCommandBuffer> cb) 
{
    id<MTLTexture> texture = view.currentDrawable.texture;
    /* ... */
}];

Для повышения производительности выпускайте чертежи как можно скорее.

person Hamid Yusifli    schedule 01.12.2019
comment
Могу ли я сохранять текстуру столько, сколько захочу? Я имею в виду текстуру, а не прорисовку - person zeus; 02.12.2019
comment
Нет, вам следует как можно скорее выпустить текстуру, доступную для рисования. - person Hamid Yusifli; 02.12.2019
comment
если вы хотите сохранить текстуру, скопируйте ее в другую текстуру с помощью MTLBlitCommandEncoder - person Hamid Yusifli; 02.12.2019