Fehler beim Laden von Fotos
Übersicht

![]() |
AnaBetreff: Fehler beim Laden von Fotos |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallihallo,
ich versuche gerade für meine Schwiegereltern eine Memorie zu schreiben und das soll ihre Fotos aus ihren Alben als Motive verwenden. Dabei werden die Bilder stark mit SetScale verkleinert und auf eine einheitliche Größe gebracht. Erstmal hatte ich das mit texturen von mir probiert und das ging auch völlig problemlos, jetzt hab ich bei gut der Hälfte der Bilder das Problem wenn ich sie versuche zu zeichnen erhalte ich über die konsole vom BMax die Meldung: "D3DERR: Unable to create texture", hat das mit der starken Verkleinrung zu tun oder das es sich um JPG Datein handelt? Also ich versteh zwar eingiermaßen, was die Fehlermeldung bedeutet, aber werde nicht so schlau warum sie entsteht. Da es sich um Fotoshandelt sind diese Bilder natürlich alle sehr groß |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
Hangman |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kommt der Fehler auch bei Verwendung von OpenGL? | ||
Ich habe Berthold gebrochen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dein Code wäre interessant. Ich tippe am ehesten darauf dass die Bilder einfach zu groß sind und der 2^n-Regel nicht entsprechen.
Passiert das schon beim ersten zu ladenden Bild oder erst nach einer Weile? Kann es einfach sein dass der Grafikkartenspeicher deiner Eltern nach ienigen Photos überfüllt ist? Dann wäre mein Tipp den Ordner vorher einzulesen, Bild für Bild kleiner zu speichern und die großen Bilder dann freizugeben. Allerdings gab es da wenn ich nicht schwer irre das Problem dass BMax reservierten Grakaspeicher nicht zuverlässig freigibt. |
||
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 |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke erstmal für die Antworten, also explizit verwende ich kein OpenGL aber tut das BMax nicht einfach von Natur aus? Also ich hab da wirklich keine Ahnung von, deshalb kann ich dir da keine qualifizierte Antwort geben
Mit dem Code bin ich mir einfach nicht im klaren, welche Stelle da interessant seinen könnte ich gehe davon aus, dass es gar nicht so direkt in meinem Code ist sondern mehr irgendwie mit der inkomaptibität der internen BMax Geschichten und der Fotos handelt. (Ohne das ich die Schuld dafür von mir weisen möchte) Hier die Zeichenfunktion, aber die hatte ich eigentlich schon freigesprochen: BlitzMax: [AUSKLAPPEN] If Fliped Das der Graphicspeicher überfüllt ist glaube ich nicht, weil bestimmte Fotos immer Probleme machen, andere nicht, bei einem vollen Speicher wäre es doch eher so dass das 4erte (oder so ähnlich) Bild zuviel ist oder nicht? Alle vorher laden will ich auf keinen Fall, es dauert schon lange genug 40 für die Karten zu laden, und wir reden hier über mehrere Tausend. Das mit den 2er Potenzen ist eine hervorragende Idee. Wie kann man das Testen? Spontan würde ich sagen solange durch 2 teilen bis 2 oder was kleineres raus kommt, aber das funktioniert nur gut mit kleinen Zahlen, im "Realen" Einsatz versagt das verfahren. Vielen dank nochmal an der Stelle Blade |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
- Zuletzt bearbeitet von Ana am Mo, Sep 05, 2011 12:34, insgesamt 2-mal bearbeitet
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
D3D steht sicherlich für Direct3D, also versuch doch BlitzMax: [AUSKLAPPEN] SetGraphicsDriver(GLMax2DDriver) |
||
Starfare: Worklog, Website (download) |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eventuell, aber das ist kein gültiger Befehl. Zumindest meint mein lieber Compiler, dass es kein TGLMax"DRiver() to TGraphicsDriver convertieren kann. Mach ich was falsch oder ist dir eventuell ein Fehler unterlaufen? | ||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn du schon zu Beginn des Spieles weißt, wie groß letztendlich die Spielkarten sein werden, kannst du ja alle Original-Fotos nacheinander in das gleiche LadeBild:Timage laden, dann skaliert ausgeben und dann mit GrabImage eine Bildschirmfoto KartenBild:Timage in der Zielgröße erstellen und dies in die endgültige Liste aufnehmen. Das mit der ZweierPotenz wird dir nicht viel nützen, da du ja die Fotos nicht verstauchen wirst wollen.
Besser ist es hier jedes Foto zunächst seitenverhältnistreu so zu skalieren, dass die längere der beiden Seiten schon stimmt und dann (bei z.b. Querformatigen Bildern) oben und unten einen Rand hinzufügen, damit das KartenBild quadratisch wird. Im Spiel selbst musst du ja nur 40x das gleiche "Rückseiten-Bild" malen und immer nur dann echte Fotos, wenn zwei offen liegen. Zum Thema lange Ladezeit: Theoretisch kannst du ja anfangen, ohne ein einziges Bild geladen zu haben! Zwischen den 40 Karten bestehen nur "Beziehungen" zu Bildern. Solange sie nicht aufgedeckt werden, brauchst Du das Bild nicht vorzuhalten. Wird eine Karte aufgedeckt, so wird das Bild geladen, oder ist schon da. Nütze die Wartezeit des Spielers allmählich alle Fotos nachzuladen! |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es muss in der Tat SetGraphicsDriver(GLMax2DDriver()) heißen, mein Fehler ![]() |
||
Starfare: Worklog, Website (download) |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Zap
Ja genau, das scheint das Problem auch zu lösen, wirft aber auch Neue. Erstmal ist es nun irre langsam, was vermutlich aus 2tens kommt. Die Bilder werden nun Nebeneinander gesetzt bis sie keine Ahnung welches Format haben ... @Midimaster Ich bin mir nicht so sicher ob ich dich richtig verstehe. Ich soll die Bilder auf ein Image des richtigen Formates speicher? Dazu müsste ich sie doch aber auch als Pixmap zeichnen und dann auf ein neues Image legen? Aber das löst das Problem ja dann nicht, weil ich sie ja gerade nicht zeichnen kann. |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
probier mal folgendes:
BlitzMax: [AUSKLAPPEN] SetGraphicsDriver GLMax2DDriver() |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bin mir zwar nicht so sicher, was dir das sagen soll, aber es zeichnet links ziemlich häufig das foto (teilweise nur halb) und rechts ein einzelnes falsch gestauchtes und gibt
Zeit nach laden : 2979msec Zeit nach Malen: 3288 Zeit nach Grabben: 3319 Zeit nahc Malen: 3320 aus (Resultat des ersten Durchlaufs) |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
so wie ich das verstanden habe, ist doch dein problem, dass es nach einiger Zeit zu einem Hang kommt?
teste das vorliegende Beispiel mehrere male durch, indem du immer wieder beim WAITKEY() eine Taste drückst. Dann wird jedesmal wieder ein sehr großes Bild geladen und zu einem kleinen umgewandelt. Die Frage ist doch jetzt, ob ... 1. ...es wieder zum Hang kommen wird? 2. ...die Ladezeit immer länger wird oder gleich bleibt 3. ...der Speicherverbrauch ansteigt oder gleich bleibt? bei mir hier bleibt alles drei im Rahmen und dann könnte das auch für hunderte Bilder gut laufen! Der Zeitverbrauch im Spiel wird jedenfalls nahe 0 sein: 3320-3319=1msec!!! Etwas schleierhaft ist mir, dass bei dir die Bilder verstaucht sind.... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein es ist nicht der Zeitpunkt, es sind bestimmte Bilder, wenn auch davon ziemlich viele. Wenn ich den anderen Treiber verwende geht es, aber dann geht das Zeichnen drunter und drüber, weil das bild mehrfach gekachelt wird und es sehr langsam wird | ||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann teste doch mal eines dieser Katastrophenbilder mit meiner Laderoutine ... was passiert dann?
...oder sende doch mal eines der Bilder an mich, damit ich auch daran herumprobieren kann. hier habe ich was gegen das Verstauchen: BlitzMax: [AUSKLAPPEN] SetGraphicsDriver GLMax2DDriver() |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
Ana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich danke dir für deine Mühen, aber ich hab den Übeltäter gefunden.
Der freche Grafikkartentreiber aus dem Jahre 2004 war schuld ![]() Wie schon erwähnt ich schreib es an dem PC meiner Schwiegereltern, weil ich sonst ja nicht die Bilder hätte. Gut da hätte man echt früher drauf kommen können, aber trotzdem vielen vielen Dank an euch alle =) |
||
Don't only practice your art,
but force your way into its secrets, for it and knowledge can raise human to divine |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group