Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
3-1082189318
Koba
2004-04-17 12:08
2004.05.16
База данных


7-1081011086
Lowmen
2004-04-03 20:51
2004.05.16
Системное контекстное меню


14-1083165726
PaRL
2004-04-28 19:22
2004.05.16
News


14-1082826929
SergP
2004-04-24 21:15
2004.05.16
Я тоже ничего не понимаю....


7-1081155835
Azazzello
2004-04-05 13:03
2004.05.16
Как узнать сводобное место на диске.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский