forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=109)
-   -   DrawPixmap ускорение (OpenGL) (http://forum.boolean.name/showthread.php?t=5810)

jimon 26.02.2008 18:58

DrawPixmap ускорение (OpenGL)
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 10 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

HolyDel 26.02.2008 19:28

Ответ: DrawPixmap ускорение (OpenGL)
 
glDrawPixels это очень удобная и очень тормозная команда. если нужна скорость, то быстрее всего рисовать квад, с текстурой.
фильтрация nearest.

можно пример рисующий 5к пиксмапов 512 на 512?
незабываем что это примерно 1311 мегапикселей.

jimon 26.02.2008 20:23

Ответ: DrawPixmap ускорение (OpenGL)
 
я такой код юзал, криво но пашет
Код:

Framework brl.GLMax2D
Import jimon.systimer
Import brl.PNGLoader


Graphics 800,600



img:TImage = LoadImage("Star_01.png")

Cls

SetBlend alphablend
SetColor 255,255,255
SetAlpha 1
SetScale 1,1
SetRotation 0

DrawImage img,0,0

pix:TPixmap = GrabPixmap(0,0,512,512)


For Local i2% = 0 To 10

time# = MilliSecs()
time2:Double = jMillisecs()

Cls

SetBlend alphablend
SetColor 255,255,255
SetAlpha 1
SetScale 1,1
SetRotation 0

For Local i% = 1 To 500
DrawPixmap pix,Rand(0,800),Rand(0,600)
Next

Flip 0

time = MilliSecs() - time
time2 = jMillisecs() - time2

'DrawText time,0,0
'DrawText time2,0,20

DebugLog time + " / "+time2

Next

img = Null
pix = Null
End

Ps. перепутал ... не 5K ... а 500 :-[

dimanche13 27.02.2008 11:09

Ответ: DrawPixmap ускорение (OpenGL)
 
Хороший прирост в скорости, никому еще не вредил. ;) Спасиб.

jimon 27.02.2008 18:47

Ответ: DrawPixmap ускорение (OpenGL)
 
я вот теперь подумал, а нафиг оно надо ?
кто тут усиленно pixmapы рисует ? и где ?

потому что картинка рисуется вот таким кодом : (TGLImageFrame в glmax2d.bmx)
Код:

        Method Draw( x0#,y0#,x1#,y1#,tx#,ty# )
                Assert seq=GraphicsSeq Else "Image does not exist"
                EnableTex name
                glBegin GL_QUADS
                glTexCoord2f u0,v0
                glVertex2f x0*ix+y0*iy+tx,x0*jx+y0*jy+ty
                glTexCoord2f u1,v0
                glVertex2f x1*ix+y0*iy+tx,x1*jx+y0*jy+ty
                glTexCoord2f u1,v1
                glVertex2f x1*ix+y1*iy+tx,x1*jx+y1*jy+ty
                glTexCoord2f u0,v1
                glVertex2f x0*ix+y1*iy+tx,x0*jx+y1*jy+ty
                glEnd
        End Method

и как его ускорить то ?

HolyDel 27.02.2008 20:17

Ответ: DrawPixmap ускорение (OpenGL)
 
правильно. ибо это самый быстрый способ.
хотя про GL_QUADS ходят плохие слухи. хз что с ним будет делать драйвер видекарты. Видеокарта только триугольники умеет рисовать.

Tadeus 01.03.2008 01:28

Ответ: DrawPixmap ускорение (OpenGL)
 
Цитата:

Сообщение от HolyDel (Сообщение 78227)
правильно. ибо это самый быстрый способ.
хотя про GL_QUADS ходят плохие слухи. хз что с ним будет делать драйвер видекарты. Видеокарта только триугольники умеет рисовать.

По идее должна триангулировать, что несколько замедлит рендеринг.


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

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