Форум: "Игры";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизРендер на текстуру под PowerDraw! Найти похожие ветки
← →
dRake © (2003-12-21 19:39) [0]Каким образом это можно осуществить? А то динамического ландшафта хочется,
а уйму спрайтов плодить - тормозно и, вообще, неспортивно ;)
Большая просьба - напишите, если кто знает ;)
← →
Darthman © (2003-12-22 10:36) [1]Через указатель на текстуру можно сделать. Пробовал, получается нормально.
← →
dRake © (2003-12-22 11:40) [2]Тоесть таким макаром?
PowerGraph.RenderEffect(^Texture, x, y, patern, effect); ?
Напиши плиз
← →
Darthman © (2003-12-22 13:04) [3]рендерэффект тут не при чем.
Через D3DLockedTexture делать
Image.Lock.... и так далее потом через указатель на поверхность
Сейчас ПД нет под рукой не могу сказать.
← →
dRake © (2003-12-22 14:06) [4]Ну тогда, когда будет, можешь тут написать, или скинуть на мыло?
← →
dRake © (2003-12-23 19:53) [5]Ау! Я те уж письмо выслсал - ни ответа ни привета :))
← →
Darthman © (2003-12-23 21:24) [6]Ну не было меня еще дома, не было. Вчера за комп дома не содился, извини. Работы много, устаю сильно, забываю про все на свете. :)
← →
dRake © (2003-12-23 22:18) [7]:)))
Я скоро помру от нетерпения :))
← →
Darthman © (2003-12-24 10:36) [8]Смотри сюда:
var
i : integer
LRect: TD3DLocked_Rect;
Ptr: pdword;
begin
Image.FastLock(PatternNumber,LRect); // лочим текстуру
for j:= 0 to ImageHeight-1 do
begin
SrcPtr:= Pointer(Integer(LRect.pBits) + (LRect.Pitch * j)); // указатель на нужную "строчку" картинки сдвигаем на начало "строки"
for i:=0 to ImageWidth-1 do
begin
SrcPtr^ :=(j shl 24) or Ptr^ and $00FFFFFF; // присваиваем нужное значение точки (вместе с альфой)
Inc(integer(Ptr), FormatSize); // увеличиваем указатель. FormatSize - величина формата пиксела для текстуры в байтах
end;
end;
Image.Unlock(k);
Если формат A8R8G8B8, то размер будет 4, если A4R4G4B4, то 2 и так далее. Учитывай специфику формата, и все будет здорово. Я намедни на таком принципе скринсейвер делал со снегом падающим и собирающимся в сугробы ;)
Удачи.
← →
dRake © (2003-12-24 12:33) [9]Пасибо большое! Надеюсь я скоро доделаю игруху ;)
Вот сессия кончится...
← →
dRake © (2003-12-24 13:13) [10]Много непонятного :(
Тоесть в этом цикле по идее мы лочим текстуру в рект,
затем перебираем все точки ректа, и складываем их с
точками текстурки, которую надо рисовать, учитывая альфу,
и после разлочиваем исходную текстуру.
Но в этом коде я что-то разобраться не могу.. :(
>Я намедни на таком принципе скринсейвер делал со снегом падающим и собирающимся в сугробы ;)
Можешь мне исходники на почту кинуть, я тебе тоже могу свой скринсейвер кинуть ;)
← →
dRake © (2003-12-24 13:17) [11]mailto : drakosha@pisem.net
← →
Darthman © (2003-12-24 14:35) [12]Да, я его не доделал.
А чего непонятного-то? Лочишь текстуру, рисуешь в нее что надо и разлочиваешь.
← →
dRake © (2003-12-25 13:51) [13]Ну в теории понятно, но похоже что ты этот код прям тут писал, не работает он ;) По-порядку...
SrcPtr^ :=(j shl 24) or Ptr^ and $00FFFFFF;
Насколько я понял в этой строчке пиксель исходной картинки должен формироваться из него самого + пиксель рисуемой картинки.
Компилер на этой строчке выдаёт ошибу (где-то пропущенная скобка).
Я не вижу тут пикселя РИСУЕМОЙ картинки.Image.Unlock(k);
Что есть "k" ?
И вообще можешь написать рабочий код (из своего скринсейвера), а то я вообще не секу в указателях итп. Мне нужна процедурка типа
DrawOnTexture(SrcTex, DrawTex : TAGFImage; DrawPosX, DrawPosY : integer); Но это в идеальном случае. Кстати неплохо было бы включить нечто подобное в новые версии PD :)
← →
Darthman © (2003-12-25 14:43) [14]DrawOnTexture(SrcTex, DrawTex : TAGFImage; DrawPosX, DrawPosY : integer); Но это в идеальном случае. Кстати неплохо было бы включить нечто подобное в новые версии PD :)
Идея неплохая ;)
к - номер паттерна текстуры, забыл написать. ;) сорри, процедурку наваяю сегодня, если не усну;))) тада кину тебе
← →
dRake © (2003-12-25 19:53) [15]Ну если ты такое сделаеш то я тебя в рамочке пропишу в about"e в своей гаме :))
← →
Sapersky © (2003-12-26 00:24) [16]Стоило использовать D3D, чтобы рисовать попиксельно процессором :)
То есть если это предварительная загрузка изображения в текстуру, тогда конечно, а вот если в реальном времени - есть же IDirect3DDevice8.SetRenderTarget. Правда, сам ни разу не пользовался, но раз есть - должно работать :)
← →
dRake © (2003-12-27 00:03) [17]Посмотрел по-поводу SetRenderTarget,
но там нужно указать поверхность, значит придётся самому их создавать, итд.. короче получится обычный Direct3D, зачем тогда нужен PD :)
---------------------------------
Darthman ау ;)
← →
Sapersky © (2003-12-28 22:04) [18]Surface можно получить из текстуры (GetSurfaceLevel).
Ещё, текстура должна быть создана с D3DUSAGE_RENDERTARGET.
← →
dRake © (2003-12-29 00:45) [19]Щас попробуем так...
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.031 c