DirectDraw-Surface blitting
Fido Themes (ru.directx)
От: Alex Kosarchuk <Alex.Kosarchuk@p3.f442.n50.z2.fidonet.org>
Тема: DirectDraw->Surface blitting.
Дата: 13 апреля 2001 г. 10:41
Здраствуй,All!
Есть две траблы с блиттингом:
1) сами картинки я загружаю из 256-цветных .pcx-файлов своей функцией и помещаю
в дополнительный буфер.После этого создаю offscrenn | system_memmory surface
с нужными размерами,лочу её, записываю туда данные из буфера и в дальнейшем
пользуюсь BltFast.
Вскоре обнаружилось,что мой механизм не работает с некоторыми картинками - картинки
некоторого размера (10х10,25х20 и т.п.) выводятся с ошибками, как если в буфер
на NxM записать (N-1)xM картинку. Причём алгоритм раскодирования тут скорее
всего ни при чём - его я много раз писал
и раньше.
2) Если переключиться на другое приложение,а потом - обрано на мой, то прекращается
вывод графики,IDDSurface->BltFast возвращает ошибку.
- Alex.

От: Alexey Yakovenko <waker@mdart.com>
Тема: Re: DirectDraw->Surface blitting.
Дата: 14 апреля 2001 г. 14:41
"Alex Kosarchuk" <Alex.Kosarchuk@p3.f442.n50.z2.fidonet.org>
wrote in
message news:987162478@p3.f442.n50.z2.FidoNet.ftn...
> Здраствуй,All!
>
> Есть две траблы с блиттингом:
> 1) сами картинки я загружаю из 256-цветных .pcx-файлов своей функцией
> и помещаю в дополнительный буфер.После этого создаю
> offscrenn | system_memmory surface с нужными размерами,лочу её,
> записываю туда данные из буфера и в дальнейшем пользуюсь BltFast.
> Вскоре обнаружилось,что мой механизм не работает с некоторыми
картинками -
> картинки некоторого размера (10х10,25х20 и т.п.) выводятся с ошибками,
> как если в буфер на NxM записать (N-1)xM картинку. Причём алгоритм
> раскодирования тут скорее всего ни при чём - его я много раз писал
> и раньше.
ты DDSD::lPitch учитываешь?
> 2) Если переклюиться на другое приложение,а потом - обрано
на мой,
> то прекращается вывод графики,IDDSurface->BltFast возвращает
> ошибку.
тебе, скорей всего, возвращается DDERR_SURFACELOST, нужно вызвать surf->restore
(это для primary surface и backbuffer выдается?).

От: Yura Schapov <Yura.Schapov@p18.f28.n5012.z2.fidonet.org>
Тема: DirectDraw->Surface blitting.
Дата: 14 апреля 2001 г. 18:54
Как поживаете, Alex ?
Мои бортовые системы запеленговали, что в Пятница Апрель 13 2001
11:41, Alex
Kosarchuk писал All:
AK> Если переклюиться на другое приложение,а потом - обрано на мой,
AK> то прекращается вывод графики,IDDSurface->BltFast возвращает
AK> ошибку.
Может быть Restore?
hr = m_FrontBuffer->Flip(NULL, DDFLIP_WAIT);
if (hr==DDERR_SURFACELOST) { m_FrontBuffer->Restore();
m_BackBuffer->Restore();}
Люди! Hе дайте помереть дураком! Под OpenGL движок портировал, а под D3D никак
не могу :( Очень прошу максимально простой пример как нарисовать треугольник
в D3D, а то в этом отстойном MSDN какие-то монстры огромадного размера... неужели
d3d обязательно нужно полметра костылей? Инета нету. =(
C уважением, Yura Schapov.
|