ReadPixelFast-Fehler?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

m a j o r

Betreff: ReadPixelFast-Fehler?

BeitragDo, Aug 26, 2004 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.
Bei mir ist grade folgendes Problem aufgetreten: Nachdem ich WritePixelFast genutzt habe, kann ich keine Grafiken mehr zeichnen, es erscheinen nur noch grüne Balken. Mit WritePixel geht alles perfekt.
Hier der Code(enorm gekürzt/vereinfacht):

Code: [AUSKLAPPEN]

function genmap()

karte=CreateImage(GraphicsWidth(),GraphicsHeight())
SetBuffer ImageBuffer(karte)
LockBuffer ImageBuffer(karte)


y=100
For x=0 To GraphicsWidth()

For yd=y To GraphicsHeight()
WritePixelFast x,yd,$FF00F000 ; Bei Blitz 2d die beiden ersten FF ;entfernen!
;Wenn man anstellen von WritePixelFast WritePixel schreibt, funzt es!

Next

y=y+Rand(-1,+1)


Next


UnlockBuffer
SetBuffer BackBuffer()
Return
End Function



Wenn ich nun nen DrawImage Befehl anwende, erscheint nur n grüner Balken...

simi

BeitragDo, Aug 26, 2004 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht liegst daran, dass du den Buffer nicht wieder Unlockst...
Code: [AUSKLAPPEN]

UnlockBuffer ImageBuffer(Karte)

TheShadow

Moderator

BeitragDo, Aug 26, 2004 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
GraphicsHeight()-1
und bei width auch so...

ja und lockbuffer noch dazu...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
 

m a j o r

BeitragDo, Aug 26, 2004 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ähm Unlockbuffer : Buffer = Name des zu entsperrenden Buffers wie z.B. BACKBUFFER, FRONTBUFFER oder IMAGEBUFFER. Wenn es weggelassen wird, dann wird der aktuelle Buffer, der mit SETBUFFER gesetzt wurde, geöffnet.

WIMNI entsperre ich den doch dann mit Unlockbuffer !?

@theshadow

Zitat:

GraphicsHeight()-1
und bei width auch so...
ja und lockbuffer noch dazu...


Wieso -1 ?
Und gelockt habe ich doch!

Vertex

BeitragDo, Aug 26, 2004 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Gehen wir von einer Auflösung von 640 * 480 aus. Du hast also 640 Pixel vertikal zur Verfügung. Der erste Pixel beginnt bei 0. Also zählst du weiter bis 639. 0, 1, 2, 3, 4 ... 639. Denk doch z.B. an Arrays. Du willst ein Array mit 2 EInträgen erstellen. Vermutlich sagst du auf Anhieb jetzt Dim Blub(2), was falsch ist, denn es muss Dim Blub(1) heißen, da du auf Index 0 und 1 zurgeifen kannst, bei dem ersten könntest du zusätzlich noch auf Index 2 zugreifen was 3 Einträge bedeuten würde.
mfg olli
vertex.dreamfall.at | GitHub
 

m a j o r

BeitragFr, Aug 27, 2004 11:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt, ist mir entfallen. Und das ist der Grund des Fehlers?

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Aug 27, 2004 12:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
;Wenn man anstellen von WritePixelFast WritePixel schreibt, funzt es!

Writepixel macht eine Sicherheitsprüfung und schreibt deswegen nicht ausserhalb des bildes!
bei Writepixelfast ist die Sicherheitsprüfung nicht vorhanden,
und schreibt auch ausserhalb des Bildes, und ändert ggf relevante Daten!
macht sich bemerkbar wenn der Mauszeiger oder andere Grafikelemente toal verkorkst aussehen!
[BB2D | BB3D | BB+]
 

m a j o r

BeitragSa, Aug 28, 2004 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm kann man damit also theoretisch beliebige Daten in den Speicher schreiben!?

Hubsi

BeitragSa, Aug 28, 2004 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist aber gefährlich:Onlinehilfe hat Folgendes geschrieben:
Achtung! Die Zeichenbefehle dürfen nicht außerhalb des Bildschirms angewendet werden, da sonst der Computer abstürzen kann.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

TheShadow

Moderator

BeitragSo, Aug 29, 2004 12:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Hmm kann man damit also theoretisch beliebige Daten in den Speicher schreiben!?


Ja - aber damit schreibst du meist in VRAM, weil der Befehl dafür ausgelegt wurde...

Ein Programm, das z.B. keine Grafikausgabe erfordert könnte auch im VRAM die Daten ablegen (also keine Bilder) - das wird aber nicht gemacht, weil VRAM für lesezugriffe nicht geeignet ist, und ein Vollbildprog kann die Grafiken löschen...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group