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

Вниз

Работа с непрямоугольными битмапами   Найти похожие ветки 

 
lexerursik   (2002-04-05 16:15) [0]

Хочу оптимизировать вывод карты игры на экран (элемент карты-ромб 60*30 -изометрия). Наверняка можно выводить только полезное пространство исключая прозрачные треугольники. Есть ли какие-нибудь сомпоненты для работы с непрямоугольной графикой? Если нет, то как это сделать?
С уважением Алексей


 
MBo ©   (2002-04-05 17:00) [1]

Копирование непрямоугольную область рисунка в другой

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;


 
arbiter ©   (2002-04-16 21:43) [2]

Это очень медленно. Гораздо быстрее сделать маску прозрачности и выводить битмапы функцией MaskBlt.


 
VitGun   (2002-09-10 21:34) [3]

Этот код - набросок. Писал на коленке во время лекции...:

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.


 
Artemiy   (2002-09-11 01:13) [4]

Я тоже пишу изометрический 2Д движок. Я решил эту проблему (и не только эту!) так: для вывода графики я использую не ДДрав, а Д3Д т.е. рисую треугольники а на них накл. текстуры. И я не вывожу прозр. области.
Плюсы использ Д3Д:
1. То что было указано выше.
2. Аппаратное ускорение всех опаераций по выводу графики.
3. Возможность создание таких фишек как: глобальное освещение, локальные-динамические источники света а так же туман.

Всё это вы можете посмотреть в моём изометрическом редакторе основанном на этом движке. Который вы можете взять с этой страницы: http://artemiy.boom.ru


 
Oleg_Gashev ©   (2002-09-11 01:42) [5]

Создайте регион и выводите в нем. Все, что в него не попадет, не будет выведено.


 
cyborg ©   (2002-09-11 10:28) [6]

Слушай Artemiy, ща закачиваю твой редактор, что за фигня, размера не видно, он может мегов 10 весит, а я как дурак сижу... хоть бы размер указал!


 
cyborg ©   (2002-09-11 10:44) [7]

Посмотрел, интересная вещь! Правда процессора кушает.... у меня аж музыка заикаться стала. Почему там спрайты есть, а в редакторе даже признаков их вставки нет?


 
Artemiy   (2002-09-11 14:27) [8]

cyborg
сорри за сайт...я его только создал исправлю
размер 1,3 мб.
на счёт процессора да, просто я его ещё не полн. оптимизировал, только переделал на Д3Д и фишки всякие добавил.
Что ты имееш ввиду под спрайтами? Картинки БМП в каталоге Objects?
Дак они и вставляются.


 
Владимир Васильев ©   (2002-09-11 14:29) [9]

Реально оптимизировать только использовав поддержку на уровне железа - либо Direct3D либо OpenGL



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

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

Наверх




Память: 0.49 MB
Время: 0.012 c
6-38420
AlexanderSK
2002-12-15 16:28
2003.02.13
Apache Dll


1-38180
kull
2003-02-04 15:33
2003.02.13
Кто-нибудь может объяснить это?


6-38424
Tenrai
2002-12-14 03:45
2003.02.13
Можно ли из моей программы вызвать диалог добавки в favorities?


1-38309
lopatkin
2003-02-03 13:14
2003.02.13
Функция Copy() в Delphi 6


3-38123
karan1
2003-01-28 12:16
2003.02.13
(XML) SAX ... что посоветуете...