forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   Рендер в Image с альфой (http://forum.boolean.name/showthread.php?t=5689)

Taugeshtu 26.02.2008 18:37

Ответ: Рендер в Image с альфой
 
присоединяюсь... Тоже хочу...

Munigas 02.06.2009 06:59

Рендер в Image с альфой
 
Подскажите пожалуйста как в модо отрендрить картинку очень большим размером, примерно так в пиксей 30000. Он мне пишет, не хватает памяти. Нашел там настройку рендер по частям, выставляю даже очень маленькую часть, один фиг пишет, что не хватает памяти.
Очень надо помогите. Не хочу в лаве все по новой настраивать

SBJoker 02.06.2009 10:16

Ответ: Рендер в Image с альфой
 
Никак, нельзя отрендерить картинку больше чем макс. поддерживаемый размер текстуры. Обычно 4096*4096.

IGR 02.06.2009 16:17

Ответ: Рендер в Image с альфой
 
это вы про 3Dmax сейчас говорите ??
несохраняет в jpeg и в bmp, а вот png-24bit еще 8192 pixel с альфой сохраняет !! пробовал 16384 - фигЪ !! :)

SBJoker 02.06.2009 18:07

Ответ: Рендер в Image с альфой
 
Это значит видяха держит такое. У кого то может не держать и 4096.

Черный крыс 02.06.2009 23:15

Ответ: Рендер в Image с альфой
 
нашел тему...по которой я сечас немного загоняюсь....итак поехали!
Вот меня уже сколько времени добивает этот пресловутый GrabPixmap() - метод настолько медленный, что диву даешься - оно всех устраивает??? Ее в реалтайме можно использовать, чтобы скопировать максимум квадратик 16*16 пикселей, да и то будет ощутимое падение производительности. Или же никто в своих проектах не использует спецэффекты при рендере в текстуру? Вот взять тот же Blitz3D - тама RTT работает на ура.
Оставим тофтологию и перейдем к делу...откроем исходник D3D7Max2D и глянем на этот тормознутый метод :
Код:

Method GrabPixmap:TPixmap( x,y,width,height )
If Not IsValid() Return
 
Local pixmap:TPixmap
Local srcdc,destdc
Local surf:IDirectDrawSurface7
Local renderSurf:IDirectDrawSurface7
 
D3D7GraphicsDriver().EndScene
device.GetRenderTarget Varptr renderSurf
 
pixmap=TPixmap.Create( width,height,PF_BGR888 )
renderSurf.GetDC Varptr srcdc
surf=surffrompixmap( pixmap )
surf.GetDC Varptr destdc
BitBlt(destdc, 0, 0, width, height, srcdc, x, y, ROP_SRCCOPY)
surf.ReleaseDC destdc
renderSurf.ReleaseDC srcdc
surf.Release_()
D3D7GraphicsDriver().BeginScene
Return pixmap
End Method

Как видно из кода - Марк как всегда отжигает не по детски!
BitBlt(destdc, 0, 0, width, height, srcdc, x, y, ROP_SRCCOPY) - с такими котовасями, неудивительно, что оно тормозит. Вообще то за такие вещи надо руки отрывать (с) Knightmare.
Тут всего то требуеться - залочить таргет, получив при этом указатель на сюрфейс и скопировать участок памяти в pixmap.pixels, и всего то делов...функция заработает в 100 раз быстрее.

jimon 02.06.2009 23:23

Ответ: Рендер в Image с альфой
 
Diablo1909
по-пиксельные еффекты делают на шейдерах, 20 век уже прошел :)


Часовой пояс GMT +4, время: 15:10.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot