MAV bei WritePixelFast/ReadPixelFast/CopyPixelFast

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

joshmami

Betreff: MAV bei WritePixelFast/ReadPixelFast/CopyPixelFast

BeitragSo, Sep 04, 2011 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Community,
Wie schon im Titel erwähnt bekomme ich immer eine Memory Access Violation angezeigt,
wenn ich einen der "Fast-Befehle" benutze, obwohl ich vorher die betreffenden Buffer gesperrt und danach wieder entsperrt habe.Ich habe schon alle Forum- Beiträge zu dem Thema gelesen, die ich finden konnten, aber keiner hat mir wirklich geholfen.
Wenn ich sie durch die "normalen" Befehle ersetze ist alles viel zu langsam, aber es funktioniert immerhin.
Ich hoffe, ihr wisst eine Lösung.

Xeres

Moderator

BeitragSo, Sep 04, 2011 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Du versuchst außerhalb des gültigen Bereich zu lesen/schreiben.
Die Grenzen sind 0 bis Breite-1 bzw. Höhe-1.
Ansonsten: Code, der den Fehler reproduziert, bitte.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

joshmami

BeitragSo, Sep 04, 2011 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, hier ist eine selbstgeschriebene Funktion um Texturen kopieren, bei der der Fehler auch auftritt:
BlitzBasic: [AUSKLAPPEN]
Function CopyTexture(QTex)
Local QuellTextur = QTex
Local ZielTextur = CreateTexture(TextureWidth(QuellTextur),TextureHeight(QuellTextur))
LockBuffer TextureBuffer(QuellTextur)
LockBuffer TextureBuffer(ZielTextur)
For x = 1 To TextureWidth(QuellTextur)
For y = 1 To TextureHeight(QuellTextur)
CopyPixelFast x,y,TextureBuffer(QuellTextur),x,y,TextureBuffer(ZielTextur)
Next
Next
UnlockBuffer TextureBuffer(QuellTextur)
UnlockBuffer TextureBuffer(ZielTextur)
Return ZielTextur
End Function

Xeres

Moderator

BeitragSo, Sep 04, 2011 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ja kein Wunder:
Code: [AUSKLAPPEN]
For x = 1 To TextureWidth(QuellTextur)

Lösung: Siehe oben!
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

joshmami

BeitragSo, Sep 04, 2011 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, jetzt habe ich das erst verstanden Embarassed
Hier funktioniert die Funktion natürlich auch mit CopyRect, aber bei einer anderen Funktion muss ich unbedingt alle Pixel aus einer Textur auslesen!Wie mache ich das denn in dem Fall?

BladeRunner

Moderator

BeitragSo, Sep 04, 2011 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Du xeres wirklich verstanden hast solltest Du das wissen. Die Antwort die er dir gab ist immer noch gültig.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

joshmami

BeitragSo, Sep 04, 2011 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, Xeres hat es mir im Chat nochmal erklärt.Vielen Dank nochmal Very Happy
Das Problem ist jetzt gelöst Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group