![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с непрямоугольными битмапами [Delphi, Windows]
lexerursik © (2002-04-05 16:15:00)Хочу оптимизировать вывод карты игры на экран (элемент карты-ромб 60*30 -изометрия). Наверняка можно выводить только полезное пространство исключая прозрачные треугольники. Есть ли какие-нибудь сомпоненты для работы с непрямоугольной графикой? Если нет, то как это сделать?
С уважением Алексей
Владимир Васильев (2002-09-11 14:29:00) [1]Реально оптимизировать только использовав поддержку на уровне железа - либо Direct3D либо OpenGL
Artemiy (2002-09-11 14:27:00) [2]cyborg
сорри за сайт...я его только создал исправлю
размер 1,3 мб.
на счёт процессора да, просто я его ещё не полн. оптимизировал, только переделал на Д3Д и фишки всякие добавил.
Что ты имееш ввиду под спрайтами? Картинки БМП в каталоге Objects?
Дак они и вставляются.
cyborg (2002-09-11 10:44:00) [3]Посмотрел, интересная вещь! Правда процессора кушает.... у меня аж музыка заикаться стала. Почему там спрайты есть, а в редакторе даже признаков их вставки нет?
cyborg (2002-09-11 10:28:00) [4]Слушай Artemiy, ща закачиваю твой редактор, что за фигня, размера не видно, он может мегов 10 весит, а я как дурак сижу... хоть бы размер указал!
Oleg_Gashev (2002-09-11 01:42:00) [5]Создайте регион и выводите в нем. Все, что в него не попадет, не будет выведено.
Artemiy (2002-09-11 01:13:00) [6]Я тоже пишу изометрический 2Д движок. Я решил эту проблему (и не только эту!) так: для вывода графики я использую не ДДрав, а Д3Д т.е. рисую треугольники а на них накл. текстуры. И я не вывожу прозр. области.
Плюсы использ Д3Д:
1. То что было указано выше.
2. Аппаратное ускорение всех опаераций по выводу графики.
3. Возможность создание таких фишек как: глобальное освещение, локальные-динамические источники света а так же туман.
Всё это вы можете посмотреть в моём изометрическом редакторе основанном на этом движке. Который вы можете взять с этой страницы: http://artemiy.boom.ru
VitGun (2002-09-10 21:34:00) [7]Этот код - набросок. Писал на коленке во время лекции...:
begin
for x:=1 to 200 do
for y:=1 to 200 do
begin
dximagelist1.Items[0].Draw(dxdraw1.surface,(x-1)*50,(y-1)*32,0);
dximagelist1.Items[0].draw(dxdraw1.surface,(x*50)-20, (y*32)-15,0);
end;
З.Ы Разрмер тайла 64x31.
arbiter (2002-04-16 21:43:00) [8]Это очень медленно. Гораздо быстрее сделать маску прозрачности и выводить битмапы функцией MaskBlt.
MBo (2002-04-05 17:00:00) [9]Копирование непрямоугольную область рисунка в другой
procedure TForm1.Button1Click(Sender: TObject);
var
PolyRgn:hRgn;
APolygon:array[1..5] of TPoint;
r:trect;
begin
image1.Picture.LoadFromFile("e:\4.bmp");
APolygon[1]:=Point(0,0);
APolygon[2]:=Point(30,20);
APolygon[3]:=Point(50,50);
APolygon[4]:=Point(20,30);
APolygon[5]:=Point(0,0);
PolyRgn := CreatePolygonRgn(APolygon, 5, 0);
SelectClipRgn(image2.Canvas.Handle, PolyRgn);
r:=image1.clientrect;
image2.canvas.copyrect(r,image1.canvas,r);
DeleteObject(PolyRgn);
end;