Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.044 c
2-1168345826
Still Swamp
2007-01-09 15:30
2007.01.28
Проблемы с евритом


2-1168699117
IvanIvan
2007-01-13 17:38
2007.01.28
DbGrid


15-1168357595
ocean
2007-01-09 18:46
2007.01.28
Скопировать несколько DVD в один


2-1168197505
anton773
2007-01-07 22:18
2007.01.28
разобрать число


2-1168125535
Тема
2007-01-07 02:18
2007.01.28
Создание клиент-серверного сетевого чата




   Наверх