blitz-Max Bug?
Übersicht

![]() |
SmilyBetreff: blitz-Max Bug? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, ich bin gerade auf folgendes Problem gestossen:
Wenn bei mir in Bmax schon einige bilder (oder auch andere Ressourcen) geladen wurden, verhält sich der befehl Createimage ein wenig merkwürdig. Ich habe im Code unten einfach mal die Stelle, in der normalerweise bilder geladen werden durch zufällige "Createimage"s ersetzt. Wenn ich mit der Maus über den Button gehe, wird KEIN hover-button angezeigt. Wenn ich die for-next schleife am Anfang entferne Funktioniert die Funktion Drawbutton allerdings einwandfrei. Also schlussfolgere ich einfach mal, dass es daran liegt, dass schon speicher belegt wurde. Ich kann mir da keinen Reim Drauf machen. Hat ausser mir sonst jemand das Problem? Code: [AUSKLAPPEN] Strict
Graphics 800,600 AutoMidHandle 1 Global buttonimg:Timage = LoadImage("Button.png") Global buttonovimg:Timage = LoadImage("buttonover.png") Local img:Timage[1000] For Local x:Int = 1 To 999 img[x] = CreateImage(Rand(100,200),Rand(10,20)) Next Global pixel:TImage = CreateImage(3,3) Repeat Cls drawbutton 400,300, "aaa" Flip Forever Function Drawbutton(x,y,t$) Local ret:Int DrawImage pixel, MouseX(), MouseY() If ImagesCollide(Pixel,MouseX(),MouseY(),0,buttonimg,x,y,0) DrawImage buttonovimg, x, y ret = 1 Else DrawImage buttonimg, x, y End If SetColor 0,0,0 DrawText t$,x-TextWidth(t$)/2,y-TextHeight(t$)/2 SetColor 255,255,255 Return ret End Function |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich würd sagen du bombst einfach blödsinnig deinen RAM und VRAM zu mit 1000 * potentiell 256x32 texturen (40MB VRAM) und wartest vor allem nicht bis die Texturen wirklich upgeloaded sind.
Wenn du dem Problem ein wenig beikommen willst solltest du das ganze ein wenig geschickter aufbauen um deiner Grafikkarte nicht den Verstand zu rauben. Versuchs mal mit einem drawimage buttonimg,0,0 drawimage buttonovimg,400, 400 flip cls zwischen dem Laden der Bilder und der Loop Und wenn das auch nix hilft, vor Graphics mal SetGraphicsDriver( GLMax2DDriver() ) um auszuschliessen das deine Treiber mit DX7 Problemen haben (ATI Omega Mod zb) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn ich das mit dem drawimage beim Bilder laden mache geht es in dem von mir oben geposteten Beispiel auch.
aber in diesem code bringt das trotzdem nichts, ich habe immer noch den fehler. (komischerweise tritt der auch nur manchmal auf. Und manchmal geht es ohne probleme): (Ich hab mal die bildgrößen dahintergeschrieben, falls es von relevaz sein sollte) das hier ist jetzt die originale init.bmx aus meinem Projekt (Vlt kann ich auf den Pixel ja auch verzichten. Nur Leider habe ich noch keine bmax-alternative für imagerectoverlap finden können) Code: [AUSKLAPPEN] 'Variablen
Local gamemode:Int Local backx:Int Local bottomhigh:Int Local tmpvar:Int Local menubtnx:Int Local sel:Int 'Stuff Graphics 800,600 SetBlend alphablend SetMaskColor 255,0,255 Local font:TImageFont = LoadImageFont("font.ttf",25,SMOOTHFONT) SetImageFont font 'Bilder Laden Local backimg1:Timage = LoadImage("img/sky.jpg") ' 800x600 Local backimg2:Timage = LoadImage("img/sky2.bmp",MaskedImage) ' 800x600 Local Bottomimg:Timage = LoadImage("img/bottom.bmp",Maskedimage) '256x90 AutoMidHandle 1 Global pixel:Timage=CreateImage(5,5) Global buttonimg:Timage = LoadImage("img/button.png",Maskedimage) '285x73 Global Buttonovimg:Timage = LoadImage("img/buttonover.png",Maskedimage) '285x73 Function Drawbutton(x,y,t$) Local ret:Int DrawImage pixel, MouseX(), MouseY() If ImagesCollide(Pixel,MouseX(),MouseY(),0,buttonovimg,x,y,0) DrawImage buttonovimg, x, y ret = 1 Else DrawImage buttonimg, x, y+5 End If SetColor 0,0,0 DrawText t$,x-TextWidth(t$)/2,y-TextHeight(t$)/2 SetColor 255,255,255 Return 1 End Function |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit den Bildgrössen beschwörst du Probleme herauf.
Denn Grafikkarten akzeptieren nur 2er Potenz Texturen. Das heisst im Klartext das sie in BlitzMax intern erweitert werden, wobei 28X zu 512wird, und 7X zu 128 und dergleichen. Das ist allerdings kein Grund das es nicht geht ausser du bist auf einer 4MB oder 8MB Grafikkarte. Was ich eher als problem ansehe ist das du keine quadratischen Bilder hast, denn es gibt Grafikkarten die nicht quadratische Texturen ganz einfach nicht rendern. BlitzMax erweitert zwar auf 2er Potenzen, bin mir jedoch nicht sicher ob es das im neuen DX Modul auch noch für quadratisch macht. Hast du mal versucht den Max2D Treiber auf GLMax2DDriver() zu setzen? |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja Treiber umstellen habe ich versucht. Ebenfalls ohne erfolg.
Ich habe mal mein komplettes Programm im Aktuellen fortschritt hochgeladen. http://phpprogger.ph.funpic.de/uploads/prog.zip auch ein delay 10 zwichen dem Laden der grafiken bringt nix. mfg, Smily0412 |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Funktioniert bei mir einwandfrei (nachdem ich setgraphics vor graphics gesetzt habe...) sowohl ohne den Treiber zu setzen als auch mit.
EDIT: Und dein Tstprog rennt auch, wenn man ihm die 10 Sekunden gibt die es braucht um alle images zu erstellen. |
||
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 |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm dann ist es wohl direkt ein problem mit meinem PC
Manchmal gibt die Abfrage bei mir immer 0 zurück: if ImagesCollide(Pixel,MouseX(),MouseY(),0,buttonovimg,x,y,0) Mal sehen, ob ich das Problem vielleicht irgendwie noch ganz anders lösen kann. (... omg und das alles nur, weil ich prüfen möchte, ob sich die maus über dem Bild befindet o_O) gruß, smily0412 |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Versuchs mal mit der "neuen Art" mit Kollision zu arbeiten, also mit dem Schreiben und Lesen von Kollision. Dann kannst du für die Maus nämlich eine simple Rect Kollision nehmen ![]() Denn deine Buttons werden sich mit Garantie nicht ändern in ihrer Position, heisst alle Buttons 1x kollision zeichnen und maus nur read gegen den entsprechenden Kollisionslayer Wenn du die alte "version" nimmst, dann wird immer wieder geschrieben und gelöscht. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group