[Erledigt] Image-Manipulation

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

bruZard

Betreff: [Erledigt] Image-Manipulation

BeitragMi, Jun 15, 2005 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Seit einigen Stunden rühre ich nun schon im Module-Brei, aber ich bekomme keine Antwort.

Die Fragestellung:

Ich habe ein Image, dieses soll wiederholt in ein anderes (neues, leeres) Image geschrieben werden. Das es weder LockBuffer() noch ein darin wirkendes DrawImage() gibt ist mir bewusst.
Muss ich jetzt tatsächlich Pixel für Pixel des Originalbildes in das neue kopieren?

Bin dankbar für jede Holzlatte gegen den Hinterkopf.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image
  • Zuletzt bearbeitet von bruZard am Do, Jun 16, 2005 9:20, insgesamt einmal bearbeitet

MVB

BeitragMi, Jun 15, 2005 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Du zeichnest das Bild in den Backbuffer und kopiersts es von da dann mit GrabImage. Eine andere Möglichkeit gibt es leider nicht (ausser jeden Pixel einzel). Finde ich auch zimlich nervig, da GrabImge extrem langsam ist. Ich verzweifel auch zur Zeit, da ich das in meinem derzeitigen Projekt sehr oft machen muss. Und mit der Geschwidigkeit würde das viel zu lange dauern.
aquamonit.de|BlitzMax|MaxGUI

bruZard

BeitragMi, Jun 15, 2005 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee, das ist totaler Schrott ... ich brauche Pixelmanipulation zur Laufzeit...
Aber trotzdem danke für den Beitrag.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Henry

BeitragMi, Jun 15, 2005 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Sonst geht da nur noch GrabPixmap...damit bleibt die Pixelmanipulation erhalten.
Aiya Eärendil Elenion Ancalima!

All you have to decide is what to do with the time that is given to you.

Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen!
Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht!
 

Dreamora

Betreff: Re: Ich werd' noch bekloppt: Pixmaps

BeitragMi, Jun 15, 2005 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
bruZard hat Folgendes geschrieben:

Ich habe ein Image, dieses soll wiederholt in ein anderes (neues, leeres) Image geschrieben werden. Das es weder LockBuffer() noch ein darin wirkendes DrawImage() gibt ist mir bewusst.
Muss ich jetzt tatsächlich Pixel für Pixel des Originalbildes in das neue kopieren?


Nö musst du nicht Smile

TPixmap.Paste( source:TPixmap,x,y )

(brl.pixmap pixmap.bmx)

Bilder kannst du garnicht manipulieren, falls du dir das erhofft hattest, denn selbst LockImage läuft über Pixmaps ...
Es gäbe da zwar eine GL Extension die etwas wie Buffer erlaubt ... aber die setzt GeForce4 voraus und ob das dein Ziel ist (heissen glaub RenderSurfaces und werden sonst für "Videokameras" etc verwendet)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

bruZard

BeitragDo, Jun 16, 2005 6:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Mensch, danke Dreamora. Ich habe zwar schon das Pixmap Modul durchforstet, aber Paste() muss mir dabei entgangen sein.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image
 

Dreamora

BeitragDo, Jun 16, 2005 7:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hehe das "CodeTab" der Standard IDE is der faulen Menschen bester Freund Wink
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

bruZard

BeitragDo, Jun 16, 2005 8:21
Antworten mit Zitat
Benutzer-Profile anzeigen
So gehts bei mir jetzt:
Code: [AUSKLAPPEN]

Strict

Graphics 800,600,0,0
SetBlend alphablend

Local img:TPixmap = LoadPixmap("test.bmp")
Local pxm:TPixmap = CreatePixmap(100,16,PF_BGRA8888)

For Local x:Int=0 To 99
   pxm.Paste(img,x,0)
Next

Local ready:TImage = LoadImage(pxm)


DrawImage ready,100,100

Flip
FlushMem
WaitKey()
End


Gäbe es da vielleicht noch was zu verbessern?
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

bruZard

BeitragDo, Jun 16, 2005 9:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe den Kram mal gezipped ... bei mir dauert der Kopiervorgang 16msecs, das wäre schon fast für Echtzeit zu gebrauchen.

ImageCopyTest (ca. 38kb)
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Bigmichi

BeitragDo, Jun 16, 2005 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir läuft es mit 3 ms o.O woran liegt es ?

also von 12 auf 3 is ja schon ein stück bei größeren Sachen

hab auch net grad son tollen rechner wie er...

3000+ AMD 768 DDR ATI R 9800 Pro

bruZard

BeitragDo, Jun 16, 2005 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe mich vertippt, es sind 6msecs Embarassed
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Bigmichi

BeitragDo, Jun 16, 2005 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hehe schon besser =) habs mit 1000 probiert da komme ich immer auf 6 ms =) läuft recht gut glaub weniger das man dies noch verbessern kann ? o.O

Serendipity

BeitragDo, Jun 16, 2005 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Hehe das "CodeTab" der Standard IDE is der faulen Menschen bester Freund Wink


Sorry, wenn ich mich als newbie hier einmische.

Was zum Teufel ist "CodeTab" ?
sowas wie ". Leertaste" in Eclipse? oder tab in bash?

Überhaupt ist die Beschreibung der IDE von BM sehr kurz geraten...
 

klepto2

BeitragDo, Jun 16, 2005 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Der "Code"- Tab ist die "Karteikarte" , die sich auf der rechten Seite Der IDE
befindet. Dort gibt es sonst noch "Home" und "Debug".

Wenn du auf "Code" klickst erscheinen alle Types und Funktionen, die du in deinem Code verwendest.

Serendipity

BeitragFr, Jun 17, 2005 8:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ahso Embarassed
Hatte schon gedacht, ich habe was verpasst. Wink

bruZard

BeitragFr, Jun 17, 2005 9:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe den Schnicks jetzt mal insofern ausgebaut dass wesentlich mehr Zeichenoperationen ausgeführt werden müssen pro Update und man demzufolge realistischere Ergebnisse bekommt.

Zum zeichnen eines 320x200 Fensters benötigt meine Möhre ca. 12 Millisekunden.

Ein Update wird durchgeführt wenn Ihr [SPACE] drückt.

http://www.makegame.de/downloads/pixmap_test.zip (ca. 323kb)

Besonders beim zeichnen des Mittelteils gibt es bestimmt noch Optimierungen. Skins müssen im Ordner "gfx/skins/" in einem eigenen Verzeichnis liegen. Das Skin für das Fenster muss im Unterordner "/window" liegen.

Die Zeile ...
Code: [AUSKLAPPEN]

_guiskin.Load("gfx/skins/blue")

... wechselt den Skin.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group