Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hi @ll
Ich hab mal wieder versucht, mein Projekt unter Linux zu kompilieren - mit dem gleichen Ergebnis wie das letzte Mal, wo ich schließlich aufgegeben habe: Ich bekomme keine Textur geladen.
Alles, was ich mit texturen Zeichne wird ein Texturloses weiß. Ich habe keine ahnung, worans liegt, der Code läuft unter Windows ganz normal. Die Dateien werden gefunden und geladen, auch sonst ist alles prächtig, aber nur die Texturen können nicht erstellt werden. Mipmaps sind aus, TexturIDs bekomme ich von OpenGL ganz normal geliefert. Ehrlichgesagt gehen mir die Ideen aus. Wie gesagt, der Code läuft ja unter Windows. Treiber sind auch installiert und Shader werden geladen und funktionieren auch - soweit man das ohne Texturen als funktionieren bezeichnen kann. Also man sieht zumindest den Unterschied zwischen Shader an und Shader aus.
Vielleicht kann mir ja irgendwer von den Linux-Hasen, die schon mit SDL_image Texturen geladen haben mal nen paar tipps geben.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Andere Texturloader kann ich (nicht mehr) ausprobieren, aber genau, ich wollt mal den Inhalt der Surface speichern... Verdammt jetzt bin ich schon wieder unter Windows... Gleich nochmal versuchen.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
So, ich hab jetzt mal an drei stellen den Inhalt der Bildsurface gespeichert:
1. Vor dem Umwandeln ins richtige Format (RGBA).
2. Nach dem Umwandeln ins richtige Format.
3. Und nach dem Schicken an die Grafikkarte.
Das ergebnis ist erstaunlich: 1. und 2. enthalten die korrekten Bildinformationen aber 3. gibt nur noch einen vertikalen strich zurück, welcher aber durchaus auch der Rahmen des Bildanzeige programms sein könnte.
Die Speicherfunktion ist jedes mal die gleiche (SDL_SaveBmp), zwischen 2 und 3 wird nichts anderes mit der Surface gemacht, als sie an die Grafikkarte zu schicken, mittels:
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Übergib mal bei glTexImage2D anstelle der 4 GL_RGBA. Weil irgendwie schwirrt mir da gerade so was durch den Kopf als ob ich damit auch schon mal Probleme hatte. Bin mir da aber nicht wirklich sicher. Sonst kann ich nichts entdecken was irgendwie wo Spielraum lassen würde.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hm leider nein. Vorallem wäre es mir nicht klar, wie und warum OpenGL die Inhalte der Surface derartig verändern sollte, nur wegen diesem Parameter...
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
ich werd mal beim SDL-Team anfragen, ob da irgendwas bekannt ist...
//Edit: Wenn ich wüsste, wie man die Kontaktiert...
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
yep, hab ich auch gerade entdeckt.
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Sep 06, 2005 18:34 Beiträge: 362 Wohnort: Hamburg
Hi ...
ich lade meine Texturen mit SDL_image unter windows und linux und es funktioniert beides wunderbar.
Das einzige was mir einfällt ist, dass es evtl. mit der anordnung der pixeldaten im SDL-Surface zu tun hat.
Ich bin mir nicht sicher warum (mein Code ist schon etwas älter und leider nicht kommentiert ) aber bevor ich die pixeldaten an die Graka schicke kopier ich die Daten aus dem SDL-Surface in meinen eigenen Buffer. Wenn ich das nicht mache schmiert mein Prog jedenfals ab (warum auch immer *g*). Dabei zu beachten ist aber, dass eine Reihe von Pixeldaten im SDL_Surface nicht zwingend 'width des surface' * 'anzahl der bytes pro pixel' groß sein muss. Der korrekte wert ist im 'pitch' member des SDL_Surface gespeichert.
Glaub ich jedenfalls ... wie gesagt hab ich aufgrund des alters meines codes nicht mehr so den überblick *g*
Gruß
Shai
_________________ Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hm.. Ich habe jetzt das ganze auch mal in einen Puffer kopieren lassen. Nun, gerade bin ich nicht unter Linux, aber unter Windows gehts schonmal, was zwar kein Fortschritt ist, aber zumindest auch kein Rückschritt. Sobald ich mal wieder mit Linux unterwegs bin, werde ich schauen, obs dann geht.
Danke auf jeden Fall für den Tipp.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Also bin ich auf .w umgestiegen. Und da war dann kein Unterschied zwischen mit und ohne Puffer zu bemerken.
//Edit: Es wird noch lustiger: Unter Windows funktioniert nur .pitch, während ich bei Linux damit ne AV bekomme... Da soll nochmal wer sagen, mit SDL muss man keine Codes umschreiben... Hätt ich doch besser die LCL verwendet.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Schau mal nach, ob du auf surface.pixels zugreifen kannst (z.B einfach mal ein byte auslesen)
Wenn du das nicht kannst und du unter 64bit arbeitest, sind wir evtl. schon 2: viewtopic.php?t=6896
Der Grund, warum es nur mit pitch eine Exception gibt ist, dass surface.w in dieser Situation immer 0 zu sein scheint, während surface.pitch die echte Breite ist. Somit würde also nichts ausgelesen, ergo bekommst du keine AV unter Linux und keine Textur unter Windows.
_________________ I'm not the signature, I'm just cleaning the floor...
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Hehe. ich habe gerade in deinen Thread gepostet Das kommt davon, wenn man die Foren von oben nach unten abarbeitet
Ich kann gerade schlecht experimentieren, ich mach gerade nen Rundum-Backup...
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: Bing [Bot] und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.