Прежде чем я задам вопрос: если вы хотите увидеть весь код, он находится здесь...
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
Почему рендеринг Android OpenGL ES улучшается при добавлении потока? ⇐ C++
Программы на C++. Форум разработчиков
1736432459
Anonymous
Прежде чем я задам вопрос: если вы хотите увидеть весь код, он находится здесь...
https://github.com/spencerparkin/GravityMaze
(Постарайтесь не зацикливаться на том, что это идиотское приложение.)
Теперь к вопросу...
Мое приложение не делает ничего, кроме рисования линий разных цветов. Фактически, все это делается за один вызов отрисовки. Кроме того, если я закомментирую этот вызов отрисовки и только очистлю буфер цвета и поменяю местами, мой рендеринг все равно будет медленным. Мой счетчик FPS показывает, что обычно у меня около 100 FPS, но анимация, несомненно, доказывает, что мой рендеринг медленный.
Перенесемся на несколько дней вперед. Я решил сделать ставку на производительность и добавить немного MIDI-музыки. MIDI-плеер ничего не делает, кроме отправки MIDI-сообщений в порт. Накладные расходы, которые он добавляет к основному потоку, настолько минимальны, что я не верю, что это может повлиять на производительность. Однако это подтвердило то, что мой основной цикл работает медленно, потому что после этого не только рендеринг все еще был медленным (что неудивительно), но и воспроизведение музыки тоже было медленным, и темп не был постоянным. Я снова закомментировал код рендеринга (оставив только вызов eglSwapBuffers()), чтобы ничего не отображалось и музыка по-прежнему работала медленно. (Ничего удивительного: медленная музыка лишь подтверждает проблему медлительности основного потока.)
Хорошо, теперь поймите это. Я решаю пойти на компромисс. Мой рендеринг медленный, это нормально, но я хочу, чтобы музыка воспроизводилась с правильной и постоянной скоростью. Поэтому я стараюсь вынести воспроизведение MIDI в отдельный поток, чтобы на него не влияла проблема медлительности, которая в настоящее время существует в основном потоке. Ну что вы думаете?! После этого и мой основной поток и MIDI-поток теперь работают с разумной частотой кадров! Рендеринг теперь происходит настолько быстро, насколько мне хотелось! Мой FPS сейчас ~40 (меньше 100?!), но рендеринг действительно происходит намного, намного быстрее. >Взрыв мозга!
Подробнее здесь: [url]https://stackoverflow.com/questions/77822879/why-is-android-opengl-es-rendering-improved-when-i-add-a-thread[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия