Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Der Fehler steht ja schon in der Ausgabe ^^.
Du kannst keine Texturen laden die nicht dem 2^n*2^m Format entsprechen.
Also entweder die Texturen auf 512x512,256x256,512x128,... Formate bringen oder ein besseren Loader suchen, der das automatisch macht.
OpenGL kennt mitlerweile Rechteckige Texturen aber das kann ned jede Grafikkarte und ist auch nicht so schön Performant.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Zitat:
Vllt. war es doch keine so gute Idee das Media Center mit OpenGL zu schreiben...
Wenn man so schnell aufgibt, ist es wohl allgemein keine gute Idee, mit großen Projekten anzufangen. Wenn du dich nicht richtig an son Problemen verbeißen kannst , solltest du dir vielleicht erst mal in kleineren Teilschritten/-projekten? Wissen aneignen, bevor du dich daran wagst. Oder deine Motivation überdenken
Zur glBitmap: Ja, mit dieser Meldung. Lies doch mal was drinsteht . Ganz anscheinend unterstützt deine Graka keinen non-POT-Texturen. Also Texturen, deren Höhe und Breite jeweils nicht eine Potenz von 2 sind.
Sprich es gehen nur Texturen mit jeweiliger Höhe und Breite von 2^n. Also 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024,...
Du versuchst nun eine Textur, die für die Graka keine passende Größe hat, anzulegen. Und bevor das zu interessanten Problemen führt, hat das glBitmap schon bemerkt, abgefangen und dir mitgeteilt, dass das so nicht gehen wird.
Und ich tippe jetzt mal, dass genau dieses Problem dafür sorgt, dass du auch mit SDL_image keine Ausgabe hast. Probier doch mal eine POT-Textur aus.
Bei dem Aufgeben handelt es sich doch nur um die Grafik Engine.
3 Posts die mir lösung geben sollten, da stellt sich aber doch die frage wie ich ein Bild auf meinen Hintergrund setzen kann, wenn der Hintergrund
nunmal 1024x768 ist. Ich habe meine Form und darauf soll egal ob Fenstermodus oder Vollbild der Hintergrund sein und zwar komplett.
Ich führe wieder das beispiel mit dem Media Portal an. Das läuft auf meinem Rechner, egal ob Fenster oder Vollbild und ich habe dort doch auch den
Hintergrund. Zudem ist dort auch der Hintergrund nicht 2^n, selbiges gilt auch für alle anderen Images.
Wie werden die das dort denn machen?
Zu meiner Motivation, ich versuche seit 3 Tagen einfach nur ein Bild auszugeben... Ist doch klar das dies ein wenig demotiviert.
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Wie die Bilder gespeichert sind, hat nichts damit zu tun, wie sie angezeigt werden!
(Woher sollte man beim Laden auch schon wissen, wie sie ausgegeben werden sollen)
Bei den Höhen und Breiten mit 2er-Potenzen geht es um die Pixelanzahl, die in der zu ladenden Datei gespeichert ist. Die Datei kann man mit Bildbearbeitungsprogramm (oder gar Programmcode) vorher auch relativ einfach entsprechend verzerren.
Wenn du die Textur erstmal geladen hast, kannst du sie beliebig zerren, drehen oder Ausschnitte zeichnen. Wenn du den gesamten Hintergrund abdecken willst, ist der Orthomodus wahrscheinlich interessant für dich: gluOrtho2D oder Tutorial_2D.
Hab nun endlich meine Textur geladen bzw. angezeigt, mit beiden Methoden.
Nochmal eine kleine Verständnisfrage. Muss ich nun alle meine Bilder daraufhin anpassen oder kann man das noch beim laden bzw davor machen?
Jedoch ist meine Textur auf dem Kopf, liegt es am Programmcode oder muss ich die Texture oder Körper erst dementsprechend drehen?
Werde mir die beiden Tutorials mal ansehen.
Immherhin bekomm ich jetzt endlich was angezeigt, danke
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Vermutlich benutzt du TGA oder BMP, beides Formate, die sich (manchmal) über Kopf speichern. Einfach die Texturkoordinaten umdrehen oder schon im Loader behandeln lassen, falls der das kann. (SDL_image macht das doch automatisch oder? Hatte bisher jedenfalls keine Probleme).
Wenn du SDL_Image benutzt, kannst du ohne weiteres dein Bild strecken oder auf eine größere Surface kopieren. Das mache ich z.B. so in meiner Anwendung.
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++
sowohl glBitmap (oder, Lossy?) als auch SDL_image können PNGs laden.
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++
PNGs haben noch den Alphakanal. Du musst OpenGL mitteilen, dass der da auch mit in den Daten vorhanden ist. Dementsprechend musst du anstatt GL_RGB GL_RGBA übergeben.
Wegen den Texturkoordinaten. Du verwendest immer 0 und 1. Das Bild ist vertikal gespiegelt (also aufm Kopf). Also musst du die vertikalen Koordinaten (die zweiten) jeweils austauschen (aus 0 mach 1 und aus 1 mach 0).
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: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Also, ich kenn mich mit SDL ja nicht so aus, aber - braucht man für das Laden von PNG nicht die Funktion IMG_LoadPNG? Und ist die nicht im SDL_Image.pas zu finden? Und braucht die nicht auch die LibPNG?
Traude
Edit: Wenn Du allerdings auch die Libpng nicht zur Verfügung hast, schauts natürlich noch schlimmer aus.
Wenn Du das DGLSDK auf Deiner Festplatte hast, hast Du im Unterverzeichnis "......\DGLSDK_2006-10\contribute\EasySDL" eine Datei "easySDLTextures.pas", in der eine Menge über das Laden von Texturen zu finden ist, auch über PNG.
Viele Grüße
Traue
Zuletzt geändert von Traude am Do Mai 15, 2008 18:53, insgesamt 1-mal geändert.
Hey danke genau das war es mit GL_RGBA hats geklappt Das Lösungen teilweise so fern und doch so nah sind...
Das Bild ist nun auch richtig rum
Dann würde erstmal damit ich mein Hintergrund richtig anzeigen lassen kann noch die Frage geklährt werden
ob ich nun die Bilder anpassen muss oder ob ich das irgendwie so regeln kann.
Ich persönlich finde das alles nicht gerade so leicht...
Ich kann ja z.B. keinem User vorschreiben wie die Skins aussehen müssen von der Bildgröße
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Da bleibt dir nicht viel anderes übrig, fürchte ich.
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: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Leicht ist ein relativer Begriff ^^.
Klar ist es nicht wirklich einfach, OpenGL ist eine unabhängige 3D Grafik Bibliothek und ist damit Formatlos und sehr abstrakt gehalten.
Darum benutzt man in verbindung mit OpenGL eigentlich Frameworks oder eine zusammenstellung aus Bibliotheken und eigenen Code.
Dieser weitere Code macht dann einem das Leben leichter, indem es genau an den Problemstellen ansetzt und z.B. funktionalität für Bildformate bietet, Fenster fertig initialisiert, teilweise sogar GUI zeichnet.
Hier ist allerdings das Problem, das nichts einheitlich ist, jede Lib/Framework eigene APIs und Schnittstellen schaft und somit der Einstieg sich erschwert.
Mit dieser Problematik beschäftigen sich hier auch einige im Forum, sie entwickeln selber Helfercode und stellen ihn bereit. Wenn Einsteiger Probleme haben, dann sollten die Probleme auch im Forum geschrieben werden und hoffentlich nach dem Lösen von diesen Personen aufgegriffen und mit ins Konzept übernommen werden.
Ich kann mich z.B. an das DGLSDK erinnern, wenn ich mich nicht täusche, dann ist da schon ne menge drin und Löst solche Probleme.
Alt eingesessende Leuten fällt es schwer, sich in die Lage von Neulingen zu versetzen und dementsprechend Software zu designen.
Wenn man also nicht weiter kommt einfach Fragen und in einer netten Umgangsform die Lösung mit der Community finden.
Dies kann eventuell auch späteren Einsteigern helfen, wenn sie die suche Funktion verwenden und dann diese Threads finden.
Wenn man dann konsequent bleibt und nicht die Flinte ins Korn wirft, dann sind Personen wie ich z.B. sehr Froh darüber, da man weiter helfen konnte und die Zeit die man in die Konversation und Lösungsfindung gesteckt hat nicht verschwendet war.
my2cent
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Mitglieder in diesem Forum: 0 Mitglieder und 10 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.