аппаратное ускорение / производительность и связывание различных API-интерфейсов, платформ и слоев macosx - PullRequest
2 голосов
/ 22 января 2010

чем больше я читаю о различных типах представлений / контекста / рендеринга, тем больше я запутываюсь.

относительно http://en.wikipedia.org/wiki/Quartz_%28graphics_layer%29 MacOSX предлагает Quartz (Extreme) в качестве рендеринга, который сам является частью Core Graphics. в документах Apple и в некоторых книгах также говорится, что в любом случае вы каким-то образом используете OpenGL (очевидно, поскольку эта операционная система использует OpenGL для визуализации всего своего пользовательского интерфейса).

В настоящее время у меня есть приложение, которое должно захватывать видео в режиме реального времени с камеры (через QTKit, который основан на Quicktime, но является Какао), и я хотел бы дополнительно обработать кадры (через Core Image, шейдеры GLSL и т. Д.) .

пока все хорошо. Теперь мой вопрос - имеет ли это значение для производительности, если вы

  • а) нарисовать захваченный кадр через Кварц и косвенно через OpenGL или
  • b) если вы установили контекст OpenGL и DisplayLink и явно нарисовали буферизованное изображение через OpenGL?

Каковы будут преимущества или недостатки в любом случае?

Я смотрел на различные примеры (особенно CoreImage101 и CoreVideo101) и документы со страниц разработчиков Apple, но я не понимаю, почему они идут (или должны идти) таким образом?!?

и я действительно не понимаю, где Core Video и Core Animation входят в игру? будет ли путь б) автоматически означать, что я использую Core Video? и каким образом я могу использовать Core Animation?

дополнительная информация:

p.s .: Кстати, я на Леопарде, так что пока нет путаницы в QuicktimeX:)

1 Ответ

2 голосов
/ 22 января 2010

Вообще говоря, OpenGL дает вам больше гибкости, чем API более высокого уровня. Если высокоуровневые API не предлагают нужную вам функцию, вполне вероятно, что вам придется перейти на уровень OpenGL.

Если они предлагают все, что вам нужно, то вы должны сопоставить скорость. Возможно, небольшое (почти незначительное) ухудшение, учитывая накладные расходы Objective-C.

...