Сенсорные события и OpenGL Drawing. Они встречаются в отдельных потоках? - PullRequest
0 голосов
/ 13 июня 2009

Похоже, что сенсорные события происходят в другом потоке, чем рендеринг OpenGL. Это тот случай? Контекстом для этого вопроса является система частиц, которую я создаю и которая использует сенсорные события для запуска рисования OpenGL. Поскольку рисование OpenGL довольно тяжелое, я обеспокоен последствиями потоков.

Любое понимание будет высоко ценится.

С уважением, Дуг

Ответы [ 2 ]

1 голос
/ 16 июня 2009

Неа. Та же тема.

Вы отправляете команды в подсистему OpenGL, а затем они выполняются на графическом процессоре, поэтому не «по определению» параллельный поток, поскольку графический процессор не обязательно понимает потоки так же, как процессор .

Проект OpenGL по умолчанию просто создает NSTimer, который запускает основной поток каждый кадр и вызывает OpenGL.

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

    [context presentRenderbuffer:GL_RENDERBUFFER_OES];
0 голосов
/ 13 июня 2009

Если не указано иное, ваш код выполняется в основном потоке. При этом некоторые вызовы библиотеки / SDK запускают свои собственные отдельные потоки. Таким образом, вы могли бы косвенно создавать другие потоки.

Что касается вашего конкретного случая, мой выигранный опыт не совпадает. События касания обрабатываются в главном потоке, как и openGL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...