Форум: "Media";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Вниз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 вся ветка
Форум: "Media";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.052 c