Почему рендеринг Android OpenGL ES улучшается при добавлении потока?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему рендеринг Android OpenGL ES улучшается при добавлении потока?

Сообщение Anonymous »

Прежде чем я задам вопрос: если вы хотите увидеть весь код, он находится здесь...
https://github.com/spencerparkin/GravityMaze
(Постарайтесь не зацикливаться на том, что это идиотское приложение.)
Теперь к вопросу...
Мое приложение не делает ничего, кроме рисования линий разных цветов. Фактически, все это делается за один вызов отрисовки. Кроме того, если я закомментирую этот вызов отрисовки и только очистлю буфер цвета и поменяю местами, мой рендеринг все равно будет медленным. Мой счетчик FPS показывает, что обычно у меня около 100 FPS, но анимация, несомненно, доказывает, что мой рендеринг медленный.
Перенесемся на несколько дней вперед. Я решил сделать ставку на производительность и добавить немного MIDI-музыки. MIDI-плеер ничего не делает, кроме отправки MIDI-сообщений в порт. Накладные расходы, которые он добавляет к основному потоку, настолько минимальны, что я не верю, что это может повлиять на производительность. Однако это подтвердило то, что мой основной цикл работает медленно, потому что после этого не только рендеринг все еще был медленным (что неудивительно), но и воспроизведение музыки тоже было медленным, и темп не был постоянным. Я снова закомментировал код рендеринга (оставив только вызов eglSwapBuffers()), чтобы ничего не отображалось и музыка по-прежнему работала медленно. (Ничего удивительного: медленная музыка лишь подтверждает проблему медлительности основного потока.)
Хорошо, теперь поймите это. Я решаю пойти на компромисс. Мой рендеринг медленный, это нормально, но я хочу, чтобы музыка воспроизводилась с правильной и постоянной скоростью. Поэтому я стараюсь вынести воспроизведение MIDI в отдельный поток, чтобы на него не влияла проблема медлительности, которая в настоящее время существует в основном потоке. Ну что вы думаете?! После этого и мой основной поток и MIDI-поток теперь работают с разумной частотой кадров! Рендеринг теперь происходит настолько быстро, насколько мне хотелось! Мой FPS сейчас ~40 (меньше 100?!), но рендеринг действительно происходит намного, намного быстрее. >Взрыв мозга!

Подробнее здесь: https://stackoverflow.com/questions/778 ... d-a-thread
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»