D3DERR: Unable to create texture

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Boris1993

Betreff: D3DERR: Unable to create texture

BeitragFr, Jun 01, 2012 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey
Ich habe mal wieder ein Problem Smile
Ich habe zu Testzwecken angefangen eine Conways Game of Life simulation zu schreiben, diese funktioniert auch soweit, ausser das sich die Punkte komischerweise anders verhalten als mit Conways Regeln. Das ist aber erstmal nebensächlich. Das Problem ist, das nach einer gewissen Zahl an updates die Pixmap nichtmehr gerendert wird und da, wo immer die Printausgaben kommen steht dann "D3DERR: Unable to create texture" ohne eine Fehlermeldung des Debuggers. Meist kommt dieser Fehler beim Zeichnen mit der Maus, was man nur machen kann wenn das Programm Pausiert ist.
Ausserdem verschwindet mein Desktop Hintergrund immer nachdem der Fehler aufgetreten ist.

Code: [AUSKLAPPEN]
SuperStrict

Const ps:Byte = 3
Const mxs:Int = 600/ps
Const mys:Int = 600/ps
Const w:Int = 800
Const h:Int = 600

Graphics w, h, 1, 32
SetClsColor 20, 22, 20
SetBlend ALPHABLEND

Global hud:TImage = LoadImage("Data/hud.png")

Global pixmap:TPixmap
Global img:TImage = CreateImage(mxs, mys)
Global map:Byte[mxs, mys]

Global time:Float
Global start:Float = MilliSecs()
Global rtime:Float
Global otime:Float
Global dtime:Float
Global break:Byte = True


Repeat
   Cls
   
   uinput()
   render()
   clock()
   
   Flip 0
Until KeyHit(KEY_ESCAPE) Or AppTerminate()
End


Function drawpixel(x:Byte, y:Byte, r:Byte = 255, g:Byte = 255, b:Byte = 255, a:Byte = 255, img:TImage = Null)
   If img <> Null
      pixmap = LockImage(img)
   End If
   
   WritePixel pixmap, x, y, a*$1000000 + r*$10000 + g*$100 + b
   
   If img <> Null
      pixmap = Null
      UnlockImage(img)
      GCCollect()
   End If
End Function


Function uinput()
   Local mx:Int = MouseX()
   Local my:Int = MouseY()
   
   If break = True
      If mx-100 > 2 And mx-100 < mxs*ps-3 And my > 2 And my < mys*ps-3
         If MouseDown(1)  map[(mx-100)/ps, my/ps] = 1
         If MouseDown(2)  map[(mx-100)/ps, my/ps] = 0
      End If
   End If
   
   If break = False And KeyHit(KEY_SPACE)
      break = True
   ElseIf break = True And KeyHit(KEY_SPACE)
      break = False
   End If
End Function


Function render()
   If rtime = 0
      pixmap = LockImage(img)
      For Local x:Int = 0 To mxs-1
         For Local y:Int = 0 To mys-1
            If map[x, y] = 1
               drawpixel(x, y, 255, 255, 255)
            ElseIf map[x, y] = 0
               drawpixel(x, y, 0, 0, 0)
            End If
         Next
      Next
      pixmap = Null
      UnlockImage(img)
      GCCollect()
   End If
   
   SetScale ps, ps
   SetColor 255, 255, 255
   DrawImage(img, 100, 1)
   GCCollect()
   
   SetScale 1, 1
   DrawImage(hud, 0, 0)
   DrawText Int(dtime), 10, 10
End Function

Function clock()
   time = MilliSecs()-start
   
   If rtime = 0 And break = False
      cells()
   End If
   
   If break = False
      rtime:+time-otime
      dtime:+(time-otime)
   ElseIf break = True
      rtime = 0
   End If
   
   If rtime >= 9
      rtime = 0
   End If
   
   otime = time
End Function

Function cells()
   For Local x:Int = 1 To mxs-2
      For Local y:Int = 1 To mys-2
         Local ncnt:Byte
         If map[x-1, y] = 1  ncnt:+1
         If map[x+1, y] = 1  ncnt:+1
         If map[x, y-1] = 1  ncnt:+1
         If map[x-1, y-1] = 1  ncnt:+1
         If map[x+1, y+1] = 1  ncnt:+1
         If map[x, y+1] = 1  ncnt:+1
         If map[x-1, y+1] = 1  ncnt:+1
         If map[x+1, y-1] = 1  ncnt:+1
         
         If map[x, y] = 0
            If ncnt = 3  map[x, y] = 1
         Else
            If ncnt < 2 map[x, y] = 0
            If ncnt > 3 map[x, y] = 0
         End If
      Next
   Next
End Function




Wäre nett wenn sich einer mal den Code anschaut
Liebe Grüße Boris

Xeres

Moderator

BeitragFr, Jun 01, 2012 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe kein hud image und den Grafikmodus habe ich auf Fenstermodus w & h reduziert; 1 Bit Tiefe kommt mir sehr unsinnig vor - dann läuft's Problemlos.
Warum lockst du dauernd ein Bild und schreibst in die Pixmap? Ist das nicht langsam und unnötig? Ein Array & Drawrect erreicht das selbe weniger umständlich.
Auf das Schlüsselwörtchen Then würde ich auch nicht überall verzichten, ich finde, es liest sich sehr viel schlechter.
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)
 

Boris1993

BeitragFr, Jun 01, 2012 13:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir ist aus irgendeinem Grund der dritte Parameter Vollbild oder Fenstermodus und der vierte die Farbtiefe, obwohl es in der Hilfe andersherum steht. Auf Pixmaps bin ich in einem anderen Programm von mir umgestiegen, da ich mit Drawrect&Array nur auf 60 fps gekommen bin und mit Pixmaps hingegen auf 1000.
Lockimage wird ja auch nur bei jedem Update aufgerufen und nicht bei jedem Schleifendurchlauf wie es dann bei den hunderten von drawrect aufrufen der Fall wäre. Der Fehler kommt auch wenn ich im Fenstermodus bin nach ca 219000 millisekunden. Ich seh grade im Taskmanager steigt auch der Arbeitsspeicher durchgehend an trotz GCCollect() ich denke mal daran liegt das dann

Xeres

Moderator

BeitragFr, Jun 01, 2012 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wäre mir neu, dass Tiefe und Frequenz vertauscht wären.
BlitzMax: [AUSKLAPPEN]
Graphics(w, h, 32, 60)

32 Bit Farbtiefe sollte Standard sein. Ohne Angabe der Farbtiefe wird der Fenstermodus aktiviert.
Ich glaube, Bmax hält für den Umgang mit einer Pixmap viel Speicher bereit... so oder so ähnlich. Wenn Drawrect bei dir so langsam ist, machst du was anderes falsch, behaupte ich einfach mal.
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)
 

Boris1993

BeitragFr, Jun 01, 2012 14:15
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habs jetzt gelöst der Speicherverbrauch steigt nichtmehr an wenn ich SetGraphicsDriver GLMax2DDriver() mache. So langsam sind draw rects ja gar nicht aber wenn man tausende auf einmal zeichnet da geht es wirklich um einiges schneller mit pixmaps es wird ja nur einmal Lockimage gesetzt und danach in der for schleife alle pixel gezeichnet und nicht für jeden pixel einzeln lockimage. das bmax das bei mir vertauscht versteh ich auch nicht. ich habe eine veraltete version 1.36

Aber was ich gerne noch wüsste, wo liegt der fehler in meiner cells funktion, das das programm diese labyrinth artigen strukturen bildet und nicht die normalen strukturen des game of life? falls sich jemand mit den Regeln auskennt
  • Zuletzt bearbeitet von Boris1993 am Fr, Jun 01, 2012 14:21, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragFr, Jun 01, 2012 14:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Na dann aber husch zu BlitzMax.com und neue Version herunterladen! Wir können hier nicht für jede X-beliebige Version Support anbieten.

Du veränderst das Array, deren Zustand du brauchst um die nächste Generation zu berechnen.
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)
 

Boris1993

BeitragFr, Jun 01, 2012 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe Bmax noch nicht gekauft (pssst). da ich mit meinem Konto noch kein Onlinebanking machen konnte. Beim nächsten Taschengeld werde ich es mir kaufen also nicht gleich schimpfen das ichs illegal hab Wink

Xeres

Moderator

BeitragFr, Jun 01, 2012 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Bis du bewiesen hast, dass du im Besitz einer Originallizenz bist, kannst du dir weitere Fragen abschminken.
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)
 

Boris1993

BeitragFr, Jun 01, 2012 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
kein problem ich hols mir ja demnächst Laughing
wie soll ich denn den beweis vorlegen??

Mr.Hyde

Newsposter

BeitragFr, Jun 01, 2012 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
gar nicht, aber dein Gewissen sollte ausschlaggebend sein. Wink Sind doch nicht die Internetpolizei hier Very Happy
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen
 

Boris1993

BeitragFr, Jun 01, 2012 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
genau Smile so eine tolle programmiersprache muss unterstützt werden 80 euro ist mir das auf alle fälle wert
bmax macht viel mehr spaß als viele andere sprachen die ich mir angeschaut habe.

BladeRunner

Moderator

BeitragFr, Jun 01, 2012 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Send mir einen Screenshot von deiner bb.com Account Page mit ausgegrauter BUID wenn Du BMax gekauft hast. Vorher gibt es hier keinen Support mehr von uns für Dich.
~GESCHLOSSEN~
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

BladeRunner

Moderator

BeitragMo, Jul 09, 2012 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Boris1993 hat mir heute per PM den Nachweis für seinen Kauf von BMax zukommen lassen, damit steht einem Support unsererseits nichts mehr im Wege.
Danke für deine Ehrlichkeit, und welcome back!

Daher: Wiedereröffnet.
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

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group