Mac OS X: можно обработать рендеринг к окну другого процесса?

Я получаю ту же ошибку. Здесь проблема, которая приводит к этому сообщению об ошибке:

Я создаю некоторые объекты, которые используют Logger, прежде чем настраивать log4j:

Logger.getLogger(Lang.class.getName()).debug("Loading language: " + filename);

Решение: Настройте log4j в начале в основной метод:

PropertyConfigurator.configure(xmlLog4JConfigFile); 
// or BasicConfigurator.configure(); if you dont have a config file
20
задан fixermark 24 February 2009 в 19:26
поделиться

3 ответа

Я искал решение этой проблемы почти год назад. Я создал несколько тем в списках рассылки Apple:

http://www.mail-archive.com/ cocoa-dev@lists.apple.com /msg08056.html

http://www.mail- archive.com/ quartzcomposer-dev@lists.apple.com/msg01878.html

http://lists.apple.com/archives/mac-opengl/2008/May/msg00099.html

] Мне пришлось вернуться к решению, которое использовало CGWindowListCreateImage, которое заняло захват экрана Окно процесса opengl и преобразовать его в растровое изображение для отображения в главном окне процесса. Это далеко не эффективно, так как данные пикселей передаются от видеопамяти к системной памяти.

Я также попробовал решение с плавающим окном. Окно процесса opengl всплыло над основным окном процесса и реагирует на движения мыши из главного окна. Но у меня были проблемы с перетаскиванием задержки и порядка окна z.

Вы могли бы подумать, что NSWindowSharingReadWrite будет делать то, что вам нужно, но доводов / примеров тогда практически не было.

Но, возможно, все изменилось за последний год. Держите меня в курсе, если вы найдете что-нибудь новое!

Удачи

JC

9
ответ дан 30 November 2019 в 01:13
поделиться

Окно в одном процессе может быть записано в другим процессом, по-видимому если эти NSWindowSharingType установлен на NSWindowSharingReadWrite. Это было добавлено в Leopard. Обратите внимание, что я не использовал это сам, но я сказал бы, что это, по крайней мере, удаляет, "не может быть сделан" препятствие для Вас;-)

4
ответ дан 30 November 2019 в 01:13
поделиться

Here is the overall answer received from Apple's development team.

There is essentially no way to do this in MacOSX 10.5 and earlier that is as clean as attaching an OpenGL rendering context to another process's window. The hacks people have developed may be the best solutions in those cases.

The closest thing we have in MacOS 10.6 is the IOSurface system; using that in 10.6 seems to be the cleanest solution. If you want clicks in the rendered-to process to be intercepted by the rendering process, you'll have to bundle up the events yourself and pass them to the rendering process using whatever method you find most appropriate.

More information on IOSurface could be found in this StackOverflow entry

6
ответ дан 30 November 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: