Я столкнулся с проблемой, когда моему приложению требуется динамическая загрузка изображений во время выполнения. Это становится проблемой, потому что невозможно загрузить их все сразу, так как я не могу знать, какие из них будут использованы ... в противном случае я должен загрузить все. Проблема в том, что некоторые люди не имеют хороших ПК и жалуются, что загрузка всех изображений в графический процессор занимает у них много времени из-за плохого оборудования.
Моя работа с последней группой заключалась в загрузкетекстуры так же, как это необходимо, и это работало по большей части. Проблема заключается в том, что во время приложения возникают задержки, когда необходимо загрузить серию изображений, и есть задержка из-за загрузки.
Я исследовал, как обойти это, и у меня есть идея: пользователи хотят гладкого опыта и все в порядке, если текстуры загружаются не сразу, а вместо этого. Это облегчает задачу, так как я могу загрузить в фоновом режиме, а затем просто ничего не рисовать для того, где должен быть объект, и затем привести его в действие после того, как это будет сделано. Это приемлемо, потому что загрузка в любом случае обычно довольно быстрая, но она достаточно медленная, поэтому у некоторых людей она падает ниже 60 кадров в секунду, что вызывает некоторое заикание. В среднем это вызывает примерно 1-3 кадра заикания, поэтому загрузка разрешается быстро и в среднем менее 50 мс.
Мое решение состояло в том, чтобы попытаться что-то с помощью PBO получить некоторую асинхронную загрузку. Проблема в том, что я не могу найти в Интернете, как я могу узнать, когда загрузка будет завершена. Есть ли способ сделать это?
Я полагаю, есть четыре варианта:
- Есть способ сделать то, что я хочу с OpenGL 3.1 и далее, и это будет
- Невозможно сделать (1), но я мог бы поставить забор, а затем проверить, выполнен ли забор, однако мне никогда не приходилось делать это раньше, поэтому я не уверен, сработает ли он вэтот случай
- Это невозможно, но я могу предположить, что все будет загружено через <50 мс, и использовать некоторую временную метку, чтобы определить, можно ли это сделать, или нет, и просто надеяться, что это так (и есливремя <50 мс с момента отправки загрузки, затем ничего не рисовать) </li>
- Это невозможно сделать для загрузки текстуры, и я застрял
Это приводит меня кмой вопрос: Могу ли я узнать, когда будет выполнена асинхронная загрузка пикселей в текстуру?