Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.28;
Скачать: CL | DM;

Вниз

IDirectDrawSurface.Blt (Подскажите флаги)   Найти похожие ветки 

 
h8394E   (2006-06-01 17:02) [0]

Доброго времени суток!
Решил вчера изучить DirectDraw. У меня заголовки от JEDI (к стате, а почему все указавают там на страницу /DelphiGraphics - её давно нет).

Так вот, мне надо из спрайтовой поверхности ( var SpriteSurface:IDirectDrawSurface; ) во вторичную поверхность ( var SecondarySurface:IDirectDrawSurface; ) скопировать спрайт, уложенный в прямоугольник ( var Rect: TRect; ). При этом повернуть спайт на любой угол ( var Angle:integer; ) и не копировать $ffffff цвет ( ColorKey у SpriteSurface я установил нормально,  так как BltFast копирует всё отлично! )...

Всё это я  делал так:
new(bltfx); // Var BltFx:PDDBltFx;
bltfx^.dwSize:=sizeof(bltfx);
bltfx^.dwRotationAngle:=Angle*100; //Насколько слышалб здесь углы в 1\100 градусов измеряются
SecondarySurface.Blt(@Rect, SpriteSurface, @Rect, DDBLT_KEYSRC or DDBLT_ROTATIONANGLE, bltfx);
dispose(bltfx);


 
Sapersky   (2006-06-01 17:26) [1]

Не повернётся.
DD фактически поддерживает только блиттинг с цветовым ключом, на большинстве современных карт - растяжение (Stretch) с фильтрацией, и, вроде, отражение (вывод "кверху ногами"). Ну ещё заполнение цветом.
Поворачивать надо или софтверно, или (рекомендуется) через OGL/D3D.

З.Ы. New/Dispose для bltfx - не обязательно, можно объявить её как TDDBltFX и передавать в Blt как @bltfx.


 
h8394E   (2006-06-01 17:46) [2]

Странно, а почему тогда такие константы (поворота) есть???
И в статье королевства было написано, что Blt (в отличае от BltFast) поддерживает то что ты сказал + повороты на 90\180\270 + на любой угол...
А Если програмно поворот делать, это ничего, если на одну плоскость я 360*4 спрайта загоню, и потом просто уже нужный спрайт по нужным углом копировать буду. Это будет нормально, или лучше каждый кадр поворачивать N"е число спрайтов (на экране - копии моих начальных 4х, но многие - под разными углами)...


 
h8394E   (2006-06-01 18:11) [3]

Вот, посчитал: для снимков одного спрайта на 360 градусов мне понадобится поле 768х480 пикселей (графика 8-битная, индексная) так вот, что лучше - поворчивать в каждом кадре, или просчитаьт вначале???
И, всё-таки  есть ли аппаратнай поворот???


 
a22 ©   (2006-06-01 18:39) [4]

аппаратный поворот есть, Direct3D/OpenGL. не надо использовать DirectDraw, он умер


 
h8394E   (2006-06-01 19:07) [5]

Чёрт....

Ну, всё равно - спасибо!



Страницы: 1 вся ветка

Текущий архив: 2007.01.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
15-1168283686
Prohodil Mimo
2007-01-08 22:14
2007.01.28
что такое CD/MD управление


15-1167917805
Layner
2007-01-04 16:36
2007.01.28
Вопрос по компилятору


15-1168599776
Rouse_
2007-01-12 14:02
2007.01.28
Как правильно рисовать в MS Paint - е :)


2-1168104623
Infinityx93
2007-01-06 20:30
2007.01.28
Обьясните как Chart om пользоваться???


15-1168438608
vasIzmax
2007-01-10 17:16
2007.01.28
"...свиные консервы..." :)