Проблема с созданием поверхности в DirectDraw на WM6
От: iGNER  
Дата: 30.03.09 06:16
Оценка:
Привет

Проблема с созданием поверхности в DirectDraw (WM 6 SDK). При первом запуске приложения все ок, но при повторном запуске метод IDirectDraw::CreateSurface возвращает ошибку E_OUTOFMEMORY. Ошибка такая возникает только при попытке работать с двойной буферизацией, т.е. при попытке создать поверхность с флагами DDSD_CAPS | DDSD_BACKBUFFERCOUNT;

если не создавать задний буфер, а простую поверхность то все замечательно работает.

Проверил DDCAPS - свойства DDSCAPS_BACKBUFFER и DDSCAPS_FLIP есть.
Кстати метод IDirectDraw::GetAvailableVidMem возвращает E_NOTIMPL

Пробовал запустить все семплы из Windows Mobile 6 SDK — те же симптомы, при первом запуске все ок при повторном та же ошибка. Приходится перегружать устройство чтобы программа снова заработала (создавалась поверхность)

немного деталей:
КПК: Asus A696
операционка: Windows Mobile 6 Classic (CE 5.2.1239, сборка 17746.0.2.4)
собиралось под: Windows Mobile 6 Professional SDK, Visual Studio 2008

какие есть соображения в чем вообще может быть проблема? может у кого-то есть опыт подобной проблемы? или наоборот, у кого-то все замечательно работает под WM6/на Asus A696. Интересны любые комментарии тех кто работал с DirectDraw на Windows Mobile.

P.S. D3DM работает без проблем.
Re: Проблема с созданием поверхности в DirectDraw на WM6
От: Аноним  
Дата: 30.03.09 18:52
Оценка:
Здравствуйте, iGNER, Вы писали:

GNE>операционка: Windows Mobile 6 Classic (CE 5.2.1239, сборка 17746.0.2.4)

GNE>собиралось под: Windows Mobile 6 Professional SDK, Visual Studio 2008

Если операционка Windows Mobile 6 Classic, то почему используется Windows Mobile 6 Professional SDK, а не Classic?

GNE>Asus A696


Видеодрайвер твоего Asus A696 поддерживает двойную буферизацию? Например, мой HTC-S620 (WM 6.1 Classic) не поддерживает.
Re[2]: Проблема с созданием поверхности в DirectDraw на WM6
От: iGNER  
Дата: 31.03.09 07:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Если операционка Windows Mobile 6 Classic, то почему используется Windows Mobile 6 Professional SDK, а не Classic?


потому что здесь Microsoft пишет:

Windows Mobile for Pocket PC = Windows Mobile Classic (download the Windows Mobile 6 Professional SDK)


GNE>>Asus A696

А>Видеодрайвер твоего Asus A696 поддерживает двойную буферизацию? Например, мой HTC-S620 (WM 6.1 Classic) не поддерживает.

я без понятия где это проверить/прочитать но, по идее, если DirectDraw возвращает что DDSCAPS_BACKBUFFER и DDSCAPS_FLIP есть, то должен поддерживать, эмулятор например не поддерживает и это легко проверить проверив эти свойства.
Кроме того, в первый раз (после перезагрузки устройства) все запускается нормально и работает...
a696 directdraw createsurface
Re[3]: Проблема с созданием поверхности в DirectDraw на WM6
От: Дед Пихто  
Дата: 03.04.09 06:16
Оценка:
Здравствуйте, iGNER, Вы писали:

GNE>я без понятия где это проверить/прочитать но, по идее, если DirectDraw возвращает что DDSCAPS_BACKBUFFER и DDSCAPS_FLIP есть, то должен поддерживать, эмулятор например не поддерживает и это легко проверить проверив эти свойства.


У меня также возвращает DDSCAPS_BACKBUFFER, но реально он не поддерживается. Видимо из-за OEM специфики.

GNE>Кроме того, в первый раз (после перезагрузки устройства) все запускается нормально и работает...


Вот это уже интересно — вначале все работает, но потом сбиваются какие-то настройки ... А на голой машине (после хардресета) работает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.