![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| daemonghost |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
В процессе написания игрушки столкнулся с такой проблемой: при достаточном количестве оперативной памяти, при работе с TBitmap после загрузки в буфер определенного количества изображений вылетает данная ошибка (неверный дескритор).
Я пытаюсь загрузить в буфер 21303 изображений 32X32 с глубиной 32 Бит. На деле - это около 80 МБ, но загружается только половина, отслеживал изменения свободной оперативной памяти - свободно 200 МБ. При загрузки такого же количества, но 16X16 с глубиной 32Бит загружается все количество необходимых изображений.
Проблемы с однозначно с программой! На любом компьютере пробую отработать программу - одно и тоже сообщение "неверный дескриптор"! Загружено 44 460 - 46 136 KБ. Пробы на 1 ядерном процессоре + 1ГБ оперативной памяти WinXP Pro SP3 - загружено 46 446 {данные практически не меняются} 2 ядерном процессоре + 1ГБ оперативной памяти WinXP Pro SP3 - загружено 46 136, {данные практически не меняются} 2 ядерном процессоре + 4ГБ оперативной памяти - 44 460. {данные практически не меняются} Вопрос: какможно организовать загрузку в "банк текстур" необходимое количество информации? Буду рад любому ответу. P.S. МОжет Delphi7 Int не способна загрузить больше информации? Это сообщение отредактировал(а) daemonghost - 13.6.2011, 12:21 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
setlength(arr,sizeof(TBitmap)*strtoint(edit1.Text)); странное выделение памяти... ну да ладно, вряд ли это имеет отношение к проблеме. Есть предположение, что в системе заканчиваются дескрипторы для создания битмапов. Обычно никто не загружает маленькие картинки по одному. Проще нарисовать их все на одном большом битмапе и зная координаты каждого отрисовывать его как кусочек используя функции типа CopyRect
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| daemonghost |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
спасибо, Alexeis, за пояснение. Я попробую этим воспользоваться.
Действительно получилось, только я загружал мои кусочки и склеивал их в один тайл (Буфер). В итоге получил свои 89 МБ. На счет выделения памяти скажу, что когда использовал setlength(arr,strtoint(edit1.Text)); то выпадало сообщение invalid pointer operation при освобождении ресурсов. Это сообщение отредактировал(а) daemonghost - 13.6.2011, 21:27 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
setlength выделяет память в элементах, а не в байтах, так что ошибка скорее всего в выходе за границу диапазона в другом месте. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| daemonghost |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
тут вы правы полностью! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Звук, графика и видео" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |