GrabImage
Übersicht BlitzMax, BlitzMax NG Allgemein
regaaBetreff: GrabImage |
Do, Feb 17, 2005 15:23 Antworten mit Zitat |
|
---|---|---|
Gibt es eine Routine die Schneller ist als Grabimage? Die Zeiten für ein Grab, sind hier auf dem lahmen laptop bei einem bild von 200*200 um die 43 ms. Hab zwar was mit LockImage und so probiert, aber da lag die Zeit bei ~70ms.
N paar Tipps wärn' cool. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Vertex |
Do, Feb 17, 2005 16:22 Antworten mit Zitat |
|
---|---|---|
GrabImage benutzt intern GrabPixmap die wiederum glReadPixels benutzt. Insofern höchstens über MemCopy, wobei du den Ausschnitt Zeilenweise kopieren musst.
mfg olli |
||
vertex.dreamfall.at | GitHub |
regaa |
Do, Feb 17, 2005 16:31 Antworten mit Zitat |
|
---|---|---|
Ok, werd dies mal versuchen. Danke | ||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
regaa |
Fr, Feb 18, 2005 0:24 Antworten mit Zitat |
|
---|---|---|
Nö, werd es doch nicht.
MemCopy( dst:Byte Ptr,src:Byte Ptr,size ) sagt mir nicht viel. Wie bedien ich denn sowas, das ich da den Backbuffer irgendwie rauskopieren kann? |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Dreamora |
Fr, Feb 18, 2005 0:38 Antworten mit Zitat |
|
---|---|---|
Kannst ja sonst auch GrabPixmap nehmen.
Das ist schon gewaltig schneller als GrabImage, da das langsame die Konvertierung von Pixmap zu Image ist ( also aus einem Stream ein Bild erzeugen ) Images sind ja nicht für Echtzeitmanipulation ausgelegt aktuell. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
regaa |
Fr, Feb 18, 2005 9:15 Antworten mit Zitat |
|
---|---|---|
Hört sich gut an, aber gezeichnet werden pixmap doch bedeudend langsamer, wol? | ||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Dreamora |
Fr, Feb 18, 2005 12:39 Antworten mit Zitat |
|
---|---|---|
ja pixmap zeichnen ist rund 10x langsamer als image zeichnen, eben da pixmaps keine bilder sind sondern Rohdaten.
Was möchtest du denn genau machen? Wenn du immer ma wieder was grabst aber net immer direkt für den Screen verwenden willst, wäre vielleicht grabpixmap und später daraus nen image machen eine möglichkeit. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
regaa |
Fr, Feb 18, 2005 17:09 Antworten mit Zitat |
|
---|---|---|
Geht um eine realtime Fenstervergrößer-Funktion.
Fenster erstellen als Image! dauert 38ms bei 200x200pixel, je höher desto langsamer wird es, 800*600 liegt man schon bei über 200ms. Und das ist unzumutbar. Hier a bissel Code: Code: [AUSKLAPPEN] Method Rebuild(FLAG:Int=0) Local i:Int=0 Local temp:TImage Local temp_time=MilliSecs() Local temp_string:String ' Local temp_time2=MilliSecs() ' Print (MilliSecs()-temp_time2)+" Befehl" ' TestPhase ' 69ms -147ms für ein Fenster aktuell wenn man upper_center[i] pixmapt' ' 61ms -141ms für ein Fenster aktuell wenn man settyle auslagert :) ' 660-670ms für das MAMA Fenster ' Auf 1Ghz Notebook ' 659-651ms für das MAMA Fenster ' Auf 1Ghz Notebook 'Das Ziehen des Fensters wird aber um min. 20% schneller durch die Auslagerung' Title=Title_Save If (TextWidth(Title_Save)+30)>(W-70) For i=1 To Len(Title_Save) temp_string=temp_string+Mid(Title_Save,i,1) If TextWidth(temp_string+"...")+30>(W-70) Title=temp_string+"..." Exit EndIf Next EndIf If done_rebuild=True SetBlend ALPHABLEND Image=CreateImage(W,H,2, DYNAMICIMAGE | MASKEDIMAGE) SetViewport(0,0,W,H) For i=0 To 1 ' UPPER_LEFT If FLAG = REBUILD_WINDOW_UPPERLEFT Or Flag=REBUILD_ALL SetViewport(0,0,ulw, ulh) Cls upper_left=CreateImage(ulw,ulh,1, DYNAMICIMAGE | MASKEDIMAGE) DrawImage STYLE_IMAGE[i],0,0 GrabImage(upper_left,0,0) EndIf ' upper_center[i] If FLAG=REBUILD_WINDOW_UPPERCENTER Or Flag=REBUILD_ALL Or Flag=REBUILD_SHAPE Or Flag=REBUILD_HOR upper_center=CreateImage(W-ulw-urw,uch, 1, DYNAMICIMAGE | MASKEDIMAGE) TilePixmap(temp_upper_center[i],0,0,W-ulw-urw,uch) GrabImage(upper_center,0,0) EndIf ' UPPER_RIGHT If FLAG=REBUILD_WINDOW_UPPERRIGHT Or Flag=REBUILD_ALL SetViewport(0,0,urw,urh) Cls upper_right=CreateImage(urw,urh,1, DYNAMICIMAGE | MASKEDIMAGE) DrawImage STYLE_IMAGE[i],0-ulw-ucw,0 GrabImage(upper_right,0,0) EndIf ' CENTER_LEFT If FLAG=REBUILD_WINDOW_CENTERLEFT Or Flag=REBUILD_ALL Or Flag=REBUILD_SHAPE Or Flag=REBUILD_VER center_left=CreateImage(clw,H-ulh-blh, 1, DYNAMICIMAGE | MASKEDIMAGE) TilePixmap(temp_center_left[i],0,0,clw,H-ulh-blh) GrabImage(center_left,0,0) EndIf ' CENTER_CENTER If FLAG=REBUILD_WINDOW_CENTERCENTER Or Flag=REBUILD_ALL Or Flag=REBUILD_SHAPE Or Flag=REBUILD_HOR Or Flag=REBUILD_VER center_center=CreatePixmap(W-clw-crw,H-ulh-blh,PF_RGB888) TilePixmap(temp_center_center[i],0,0,W-clw-crw,H-ulh-blh) center_center=GrabPixmap(0,0, W-clw-crw,H-ulh-blh) EndIf ' CENTER_RIGHT If FLAG=REBUILD_WINDOW_CENTERRIGHT Or Flag=REBUILD_ALL Or Flag=REBUILD_SHAPE Or Flag=REBUILD_VER center_right=CreateImage(crw,H-urh-brh, 1, DYNAMICIMAGE | MASKEDIMAGE) TilePixmap(temp_center_right[i],0,0,crw, H-urh-brh) GrabImage(center_right,0,0) EndIf ' BOTTOM_LEFT If FLAG=REBUILD_WINDOW_BOTTOMLEFT Or Flag=REBUILD_ALL SetViewport(0,0,blw, blh) Cls bottom_left=CreateImage(blw,blh,1, DYNAMICIMAGE | MASKEDIMAGE) DrawImage STYLE_IMAGE[i],0,0-urh-crh GrabImage(bottom_left,0,0) EndIf ' BOTTOM_CENTER If FLAG=REBUILD_WINDOW_BOTTOMCENTER Or Flag=REBUILD_ALL Or Flag=REBUILD_SHAPE Or Flag=REBUILD_HOR bottom_center=CreateImage(W-blw-brw,bch, 1, DYNAMICIMAGE | MASKEDIMAGE) TilePixmap(temp_bottom_center[i],0,0, W-blw-brw, bch) GrabImage(bottom_center,0,0) EndIf ' BOTTOM_RIGHT If FLAG=REBUILD_WINDOW_BOTTOMRIGHT Or Flag=REBUILD_ALL SetViewport(0,0,brw, brh) Cls bottom_right=CreateImage(brw,brh,1, DYNAMICIMAGE | MASKEDIMAGE) DrawImage STYLE_IMAGE[i],0-blw-bcw,0-urh-crh GrabImage(bottom_right,0,0) EndIf SetViewport(0,0,W,H) Cls 'SetColor 255,255,255 DrawImage upper_left,0,0 DrawImage upper_center,ulw,0 DrawImage upper_right,W-urw,0 DrawImage center_left,0,ulh DrawPixmap center_center,clw,uch DrawImage center_right,W-crw,urh DrawImage bottom_left,0,H-blh DrawImage bottom_center,blw,H-bch DrawImage bottom_right,W-brw,H-brh DrawImage IconImage,4,4 SetAlpha 0.95 If i=1 SetColor 0,0,10 Else SetColor 120,120,120 EndIf DrawText Title,30,5 SetAlpha 1.0 SetColor 255,255,255 GrabImage(Image,0,0,i) STYLE_IMAGE[i]=Null done_rebuild=False Next Print (MilliSecs()-temp_time)+" ZEIT" Return(True) EndIf If done_rebuild=False done_rebuild=True Message.Create(ROOT,Self,WM_REBUILD,0,0,0,0,0,0,Flag) EndIf End Method |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
Übersicht BlitzMax, BlitzMax NG Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group