ReadPixelFast-Fehler?
Übersicht

m a j o rBetreff: ReadPixelFast-Fehler? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht liegst daran, dass du den Buffer nicht wieder Unlockst...
Code: [AUSKLAPPEN] UnlockBuffer ImageBuffer(Karte) |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
GraphicsHeight()-1
und bei width auch so... ja und lockbuffer noch dazu... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
m a j o r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ä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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stimmt, ist mir entfallen. Und das ist der Grund des Fehlers? | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm kann man damit also theoretisch beliebige Daten in den Speicher schreiben!? | ||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
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... |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group