чем больше я читаю о различных типах представлений / контекста / рендеринга, тем больше я запутываюсь.
относительно http://en.wikipedia.org/wiki/Quartz_%28graphics_layer%29 MacOSX предлагает Quartz (Extreme) в качестве серверной части рендеринга, которая сама является частью Core Graphics. в документации Apple, а также в некоторых книгах говорится, что в любом случае вы каким-то образом используете OpenGL (очевидно, поскольку эта операционная система использует OpenGL для визуализации всего своего пользовательского интерфейса).
В настоящее время у меня есть приложение, которое должно захватывать видео в реальном времени с камеры (через QTKit, который основан на Quicktime, но является Cocoa), и я хотел бы продолжить обработку кадров (через Core Image, шейдеры GLSL и т. д.).
Все идет нормально. теперь мой вопрос - имеет ли значение производительность, если вы
- а) отрисовать захваченный кадр через Quartz и неявно через OpenGL или
- б) если вы настраиваете контекст OpenGL и DisplayLink и явно рисуете буферизованное изображение через OpenGL?
каковы были бы преимущества или недостатки любого пути?
Я просмотрел различные примеры (особенно CoreImage101 и CoreVideo101) и документы со страниц разработчиков Apple, но я не понимаю, почему они идут (или должны идти) этим путем?!?
и я действительно не понимаю, где в игру вступают Core Video и Core Animation? идет ли путь б) автоматически означает, что я использую Core Video? и как я могу использовать Core Animation?
Дополнительная информация:
- http://developer.apple.com/leopard/overview/graphicsandmedia.html
- http://theocacao.com/document.page/306
- http://lists.apple.com/archives/quartz-dev/2007/Jun/msg00059.html
p.s .: кстати, я использую Leopard, так что никаких проблем с QuicktimeX пока нет :)