GraphicsLost Rückgabewert?
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: GraphicsLost Rückgabewert? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hat jemand schon mit dem Befehl GraphicsLost![]() Vielleicht kennt der eine oder andere das Problem. Wenn man bei Blitz3D im Fenstermodus Graphics3D X,Y,0,2 anwendet, und zur gleichen Zeit parallel eine Vollbildanwendung mit 3D öffnet, gehen alle Texturen und sogar die gesamte Grafik im Blitz3D-Fenster kaputt. Und mein Ziel ist es nun, diesen kaputten Zustand heraus zu finden, denn dann kann man zumindest mit EndGraphics ![]() Aber GraphicsLost gibt mir nie ein True zurück. Egal ob 2D-Images oder 3D-Texturen. Auch ein anderer Weg über das überprüfen eines groben Sollzustantes des Fensters über ReadPixel löst ein MAV aus, sobald ein anderes 3D-Programm in den Vollbildmodus geht. - Also, wie kann ich so ein kaputten Zustand heraus finden? |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich bekomme es grde einfach nicht auf die reihe meine grafiken zu verlieren...
hab grade alel möglichen todsünden begangen: Adminfrage, ausgeloggt, anderes prog im vollbild... hmm |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kannst ja mal versuchen, unten stehendes Programm auszuführen und dann wärend es noch läuft ein anderes (nicht Blitz3D-Programm) im Vollbild starten. Zum Beispiel Antiwar - starten und gleich wieder auf Quit klicken. Dann sieht das Blitz3D-Programm alles andere als toll aus. Man kann es dann nur noch durch EndGraphics und dem anschliessenden neu laden und erstellen aller Entities retten.
Ich wollte nebenbei eine neue Version vom Dreamplayer machen, aber so lange das Problem nicht behoben ich, nützt ja alles nichts. Code: [AUSKLAPPEN] Graphics3D 640,480,0,2
SetBuffer BackBuffer() Local Timer=CreateTimer(58) Local Camera=CreateCamera() Local Light=CreateLight() RotateEntity Light, 90,0,0 Local Cube=CreateCube() RotateEntity Cube,20,50,50 PositionEntity Cube,0,0,3 While Not KeyHit(1) TurnEntity Cube,1,0,0 WaitTimer Timer RenderWorld Flip 0 Wend |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
kannst sicher irgendwie das Appresume event aus b+ über ne dll abfangen und einfach vorsorglich die GFX neu laden | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verstehe ich nicht ganz, wieso B+, ich arbeite mit Blitz3D. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
in b+ gibt es ein event namens AppResume das kann man bestimmt auch über die winapi in b3d abfangen.
Das event tritt dann auf wenn man von einer anderen anwendung auf die eigene wechselt. da könnte man ja für alle fäälle die grafiken neu laden. |
||
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm,
hab deinen code mal ausgeführt und 2 vollbildspiele gestartet, wieder raus, würfel sieht normal aus. wieder 2 gestartet, während laufzeit getabbed, würfel sieht normal aus. kann dein problem nicht reproduzieren... l8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich will nicht ausschliessen das eine moderne Grafikkarte da weniger Probleme verursacht (ich habe im Moment eine on-Board), aber es muß schon eine 3D-Vollbildanwendung sein. Mit Vollbild meine ich im übrigen nicht das maximieren eines Fensters. Es muß schon eine Anwendung sein die 3D verwendet und auf Vollbild die Auflösung ändert, will dir aber auch nichts unterstellen.
![]() Dannach sieht das obige Programm bei mir aus, als ob man irgendwo etwas aus dem RAM gezogen hätte. Komplett durcheinander und man erkennt manchmal auch zerstückelt Bilder die man vor Stunden mal angesehen hat... Kann ja auch irgendwie nicht sein das ich der einzige mit dem Problem bin, denn das Problem hatte ich mit meinem alten Rechner zusammen mit einer billigst ATI, einer GeForce 7600 dann eine nVidia on-Board und nun eine ATI on-Board. Das ganze auf WinXP. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
hectic, du bist nicht allein mit dem Problem. Ich erhalte das auch.
Etwas schlimmer sind bei mir cubemaps. Ich brauch nur das Fenster wechseln und ich sehe viel müll anstatt ner cubemap |
||
Warbseite |
n-Halbleiter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay, ich habe das ganze jetzt auch mal getestet. Egal ob mit oder ohne Vollbild, minimieren oder ein anderes Proggi drüberschieben, es ist überhaupt nichts passiert. PC siehe Signatur. Woran das liegen könnte, kann ich nicht sagen, auf jeden Fall hoffe ich, dass ich bei der Eingrenzung mithelfen kann. ![]() |
||
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hectic hat Folgendes geschrieben: Ich will nicht ausschliessen das eine moderne Grafikkarte da weniger Probleme verursacht (ich habe im Moment eine on-Board), aber es muß schon eine 3D-Vollbildanwendung sein. Mit Vollbild meine ich im übrigen nicht das maximieren eines Fensters. Es muß schon eine Anwendung sein die 3D verwendet und auf Vollbild die Auflösung ändert, will dir aber auch nichts unterstellen.
![]() is klar ![]() |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
War wiklich nicht böse gemeint PSY, wollte nur absolut sicher gehen, da es zu Beginn den Anscheind hatte das ich der einzige mit dem Problem wäre.
![]() Zu den anderen scheint wohl noch keiner eine Lösunf zu gefunden haben. Das ist schon ein wenig blöd. Wer dennoch eine Idee dazu hat, immer her damit. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
PSY |
![]() Antworten mit Zitat ![]() |
---|---|---|
hectic hat Folgendes geschrieben: War wiklich nicht böse gemeint PSY, wollte nur absolut sicher gehen, da es zu Beginn den Anscheind hatte das ich der einzige mit dem Problem wäre.
![]() habs auch nicht so aufgefasst ![]() ich werd noch ein wenig dran rumspielen, auch mal an anderen rechnern. leider haben alle meine kisten ne nvidia drin, deshalb denk ich ich kanns auf keinem rechner reproduzieren. ich sag dir auf jeden fall mal bescheid wenn ich was rausfind... l8er, PSY |
||
PSY LABS Games
Coders don't die, they just gosub without return |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist mir bekannt, jedoch nicht mit einem Blitz3D Prog.
z.b. Ich habe Der Herr der Ringe online offen und starte Empire Earth (1 oder 2) HdRo hat keine Probleme aber Empire Earth kann man in die Tonne kloppen. Das Problem tritt nur bei ältern Spielen auf (DX 7?). Die Lösung war, das ich im Catalyst Control Center alle Einstellungen auf Programm bestimmt gestellt hab, darufhin konnte ich die Spiele wechseln und keine Fehler mehr ausmachen. Jedoch passt sich die Grafikkarte nun jedes mal an, das heißt, ich wechsel das Spiel, und der Bildschirm bleibt 4 Sekunden schwartz. |
||
It's done when it's done. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist ein interessanter Ansatz Pummelie. Das werde ich heute oder morgen auf jeden Fall noch ausprobieren, denn ich hab gleich noch Familientreffen. Ist bei mir immer an einem der Weihnachtstagen, nicht Heiligabend.
PSY, wie gesagt, ich hatte es auch mit meiner GeForce 7600 gehabt. Ich probiere dann mal die Lösung von Pummelie und werde dann notfalls das in die FAQ schreiben, wobei mir eine Selbstkontrolle des Programmes lieber währe. Denn das neuladen von Grafiken dauert 0.2 Sekunden. Aber ständig neuladen bei einem Musikplayer geht ja auch nicht. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich bin eben zufällig auf einen Beitrag von Abrexxes gestoßen:
Zitat: Im 2D Modus werden die Grafiken nicht von der Grafikkarte gemanagt, Windows gibt deswegen beim schliessen des Vollbild die Grafiken frei und sie werden überschrieben.
Seit 1.99 gibt es dafür denn Befehl fehler = GraphicsLost () Dieser Befehle gibt eine 1 zurück wenn die Grafiken nicht mehr vorhande sind. Du kannst also zb eine Funktion bauen die alle Grafiken neu läd (benutze die alten Image Handles*). (https://www.blitzforum.de/foru...hp?t=26740) Versuch doch mal eine kleine Grafik als 2D zu laden - also LoadImage - deine anderen Grafiken sind doch wahrscheinlich alles Texturen (Draw3D), oder? |
||
-~= real coders just code in binary =~- |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
BadDeath, echtes 2D macht keine Probleme bei mir. Scheint auch Systemspezifisch zu sein. Denn ich hatte auch mal da Probleme gehabt. Nunja, für alle die sich darunter nichts vorstellen können. Hier mal zwei Bilder:
So sieht es normal aus: Und so, wenn es zerstört ist: Die : 0 müsste eine 1 sein, wenn die Grafiken verloren gegangen sind. TestCode: [AUSKLAPPEN] Graphics3D 400,300,0,2
SetBuffer BackBuffer() Local Camera=CreateCamera() Local Timer=CreateTimer(58) Local Light=CreateLight() RotateEntity Light,90,0,0 Local Cube=CreateCube() RotateEntity Cube,20,50,50 PositionEntity Cube,0,0,3 Local Lost,Summ Local Image=LoadTexture("__.png",256) EntityTexture Cube,Image While Not KeyHit(1) If KeyHit(57) Then EndGraphics Graphics3D 400,300,0,2 SetBuffer BackBuffer() Camera=CreateCamera() Light=CreateLight() RotateEntity Light,90,0,0 Cube=CreateCube() RotateEntity Cube,20,50,50 PositionEntity Cube,0,0,3 Image=LoadTexture("__.png",1) EntityTexture Cube,Image End If TurnEntity Cube,0.1,0,0 WaitTimer Timer RenderWorld Color 120,0,0 Rect 0,0,110,34,1 Color 255,255,255 Text 10,0,MilliSecs() Text 10,20,": "+Lost If GraphicsLost()<>0 Then Lost=1 Flip 0 Wend Aber naja, ich werde das wohl das so hinnehmen müssen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Prüf doch mit Millisecs![]() ![]() BlitzBasic: [AUSKLAPPEN] Graphics 800,600,32,6 |
||
Warbseite |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst auch überprüfen ob das Programm mal nicht im Vordergrund ist mit:
user32.decls Code: [AUSKLAPPEN] .lib "user32.dll"
GetActiveWindow%() : "GetActiveWindow" Programm BlitzBasic: [AUSKLAPPEN] Graphics3D(640,480,32,2) Und statt dem Erro eben grafik neu laden |
||
It's done when it's done. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Cgamer
Die Idee ist super und funktioniert bisher auch ganz gut. Sogenannte Droped Frames muß man allerdings nicht mühsam über Millisecs selbst ausrechnen, sondern kann den Timer selbst ran ziehen. Das geht so: Code: [AUSKLAPPEN] Temp=WaitTimer(Timer)
If Temp>1 Then Yeah Danke für den Hinweis. Hilft mir sehr. Pummelie Da die Cgamers Methode unter bestimmten Umständen auch nachteilig sein kann, werde ich wohl eine Kombination aus beiden ran ziehen. Bei einem Player der immer so nebenher läuft, finde ich ein stetiges neuladen der Grafiken problematisch. Dafür kommt eben die Kombi aus deinem und Cgamers Methode zugute. ![]() ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group