Naja ich sage mal so, von meiner sicht her ist das erlernen Anfangs doch wichtiger als sich was fertiges zu nehmen.
Wenn ich dann bei was fertigem nen Problem habe versteht man meist ja ncoh weniger als wenn man in der Lernphase ist.
Ich melde mich auch nicht ganz umsonst in einem Forum an auch wenn es manchmal unangenehm ist zu fragen bei manchen Fragen zumindest.
Ohne z.B. das GL_RGBA hätte ich mich ja noch Tage damit rumschlagen können und wäre sicher selber auch kaum zu einer Lösung gekommen.
Es ist ja ein recht übersehbarer Begriff Bzw nur ein Buchstabe der hin musste.
Ich finde so eine Community absolut hilfreich da hier mehr Wissen zusammen getragen werden kann ans vllt. in einem Buch steht.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Bei den Texturkoordinaten, nur um nochmal drauf zurück zu kommen, ist (0,0) immer links oben(!) nicht unten. Das sollte im Texturtutorial auch so genannt worden sein. Allerdings vergisst man das leicht, oder denkt es war doch anders.
Wegen den Texturgrößen. Es gibt noch eine möglichkeit wie du "non pot" texturen einbauen kannst. Allerdings geht auch das nur bei moderneren karten (Ich meine damit das einkopieren von Pixeldaten in eine Bestehende Textur.) Wie das konkret geht weiß ich nicht ausm kopf. Allerdings sind die leute mit Ahnung von Texturen sicher schonmal über den Thread gekreist und können helfen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
So sollte später die Oberfläche aussehen. Das "Manuel ist geil" kann man dabei getrost überlesen. Ich habe die Bilder nicht angefertigt.
Das sind alles PNG Dateien mit Transparenz. Da ich zu dem Zeitpunkt nicht wußte das die Texturen eine vorgegebene Größe haben müssen
sehen die natürlich dementsprechen von der Größe her auch aus. Könnte ich da vllt. die Größe über die Transparenz regeln oder wäre dies nicht so angebracht?
Background.png -> 1024x768 - Derzeit auch die Auflösung auf dem entsprechendem Rechner.
Die Menübuttons oben links -> 32x52
Logo.png -> 489x118
Wie gesagt ich kann mir das kaum vorstellen bzw. es wurde in der Doku von Media Portal z.B. auch nie beschrieben das die Texturen dort eine bestimmtes
Größenformat haben, beim Skinning. Dieses läuft ja auch, auch wenn es DirectX ist, oder arbeitet DX etwa anders?
Gerade bei dem Background finde ich das irgendwie komisch denn es sollte ja ohne Loop sein irgendwie...
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Man übergibt die Texturdaten ja i.d.R. selbst, sprich man kann diese dann vorm Hochladen auf die Grafikkarte in passende Dimensionen (2^n * 2^n) packen. Ansonsten kann man das z.B. so machen wie ich es bei der GUI für mein Spiel mache : Ich erstelle die Grafiken in Photoshop in korrektem Aspektratio, und passe die Größe einfach vor dem Abspeichern auf 2^n * 2^n an (ich nutze das DDS-Format), und lasse dann einen Schärfefilter drüberlaufen. Im Spiel selbst rendere ich diese dann wieder mit dem korrekten Aspektratio. Es spielt ja keine Rolle ob du jetzt hingehst und eine Grafik die 4:3 ist (also z.B. 1024x768) als 4:3 oder 1:1 (z.B. 1024x1024) abspeicherst, wenn du diese nachher sowieso als 4:3 darstellst.
Ich musste gerade feststellen, das es eine Unit gibt die sich glWindow schimpft, dort gibt es eine Prozedur die sich ums laden der Images kümmert.
Diese lädt meine unkomformen Images
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Dann macht diese Funktion dass mittels gluBuildMipMaps, dass macht nämlich genau was ich oben gesagt habe. Es passt deine Texturen zuerst an 2^n*2^n an bevor es diese hochlädt. Allerdings ist gluBuildMipMaps von modernen Standpunkten aus gesehen zu vermeiden, v.a. da sie sehr langsam ist. Neuere Karten können übrigens mit passender Erweiterung direkt NPOT (also <> 2^n*2^n) laden und dafür sogar automatisch Mipmaps erstellen, allerdings muss man dann eine Alternative für Karten einbaun die das nicht können.
Wie würde sich das denn auswirken wenn ich alle "wichtigen" Texturen/Bilder vorher lade?
Dazu kommt ja es ist ja kein Game wo es vllt. auf jeden Frame ankommt, es dient ja "nur" zur Darstellung.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das hat nix mit der Rendergeschwindigkeit zu tun. gluBuildMipMaps ruft man ja dann beim Laden auf, das wirkt sich also auf die Startzeit aus (Ausnahme : du streamst Texturen, dann fällt gluBuildMipMaps aber eh flach, viel zu langsam). Nachdem ich gluBuildMipMaps verworfen hab und durch das direkte Laden von DDS ersetzt hab (direkt komprimiertes Format mit Mipmaps in der Datei, geht also direkt auf die Grafikkarte) wurde der Start merklich beschleunigt, um mehrere hundert Prozent.
Das Problem an gluBuildMipMaps ist wohl sein alter, es benutzt ja Routinen um deine Bilddaten auf 2^n*2^n anzupassen, die Routine ist wohl weder optimal noch auf irgendwelche modernen CPU-Instruktionen gemünzt (SSE, MMX, 3DNow!, etc.). Optimal ist halt wie gesagt wenn die Bilddaten direkt in einem Format abgelegt werden dass ohne Umwege auf die Grafikkarte kann, also DDS (dass ist dann DXT1, 3, 5, etc.). In diesem Format sind deine Bilddaten dann 2^n*2^n abgelegt und es wird dort auch die komplette Mipmap-Kette gebildet und abgespeichert. Das geschieht dann z.B. über ein Photoshop-Plugin (von NVidia gibts das kostenlos), man muss da also nix händisch machen.
Alles beim Start zu laden ist sowieso keine gute Idee, das mache ich auch nicht mehr. Bei mir wird vieles nur bei Gebrauch geladen. Anders würde es den Start verlängern, und evtl. denn Grafikkartenspeicher schon direkt nach Anwendungsstart fast ganz auslasten. Um im Kontext zu bleiben : Stell dir vor jemand hat tausende Platten oder Filmcover in deinem Mediacenter, die alle beim Start zu laden wäre reine Verschwendung und würde lange dauern.
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
WhiteHunter hat geschrieben:
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.
Ja das mag stimmen, gebe ich Dir vollkommen Recht.
Nehmen wir aber auch mal an da hat jemand einen VideoFile oder ein MP3 Album, dort liegen auch vllt. Coverdateien(CD Cover ist nen dummes Beispiel).
Kann ich von dem User wirklich verlangen wirklich alles an mein Programm anzupassen? Wenn ich das in der Firma machen würde, wäre ich schnell
meinen Job los.
Beim Skinning mag ich das ja noch dürfen aber dazu kommt ja auch noch eine Bilderansicht und da werden wohl die wenigsten ihre Bilder dem Programm anpassen. Ich muss also eine Lösung finden ohne sämtliche dateien anpassen zu müssen.
Dann macht diese Funktion dass mittels gluBuildMipMaps, dass macht nämlich genau was ich oben gesagt habe. Es passt deine Texturen zuerst an 2^n*2^n an bevor es diese hochlädt.
Das habe ich gemacht, aber man könnte natürlich auch bekritteln, dass es langsam ist.
Letztlich muss jeder für sich entscheiden, was er haben will. Will man ein professionelles Spiel herstellen, sollte man seine Texturen selbstverständlich so ablegen, dass ein benutzerfreundliches schnelles Laden vonstatten geht. Ein Hobbyprogrammierer sieht die Sachlage freilich ein wenig anders: ich z.B. verwende einen Haufen Bilder aus dem Internet und kann daher gar nicht hoffen ein kommerzielles Spiel daraus zu machen; für das Herstellen/Skalieren/Umspeichern hunderter Bilder habe ich gar keine Zeit (und Lust schon gar keine). Also lasse ich die Ladeprozedur das für mich erledigen. Bei mir ist eben Schnelligkeit nur die zweite Priorität.
Allerdings kann ich mir den Hinweis jetzt nicht verkneifen: Einen Vorteil hat es natürlich schon, ein paar gute Features wie Skalieren, Formate umwandeln usw. als eigene Software zur Verfügung zu haben: Man kann dann viele Files auf einmal z.B. von JPG auf DDS umwandeln und geht inzwischen auf einen Kaffee....
Und noch ein Hinweis: Wenn ich hochwertige Texturen für ein kommerzielles Spiel herstelle wollte, dann würde ich sie in einem RAW-Format (oder BMP) abspeichern oder zumindest in einem Format, das verlustfrei komprimiert, z.B. PNG. Ins Programm können sie nach Sascha Willems besser mit DDS geladen werden, also, was bleibt? Neuerliches Massen-Umwandeln ist angesagt. Wohl dem, der das automatisch abwickeln kann.
Hm... Ich mag noch einmal betonen das es kein Game wird.
Es soll bei mir ein Bereich geben "Fotos" da sollte man sich wie bei jedem anderen Betrachtungsprogramm Bilder ansehen dürfen.
Meinetwegen Urlaubsbilder mit der Digitalkamera geschossen.
Diese Bilder sind nunmal meist nicht 2^n*2^n.
Am besten wäre es auch nennt sie nicht mehr Texturen sondern einfach Bilder.
Ich habe es gegen die Geschwindigkeit mit gluBuild2DMipmaps versucht und es klappt auch. ich kann die Bilder nun so laden uns ausgeben
wie ich es mag.
Nachteil ist es läuft zwar auf meinem Notebook, und auf meinem Zukünftigen HTPC aber nicht auf meinem Game Rechner z.B.
Ich benutze DSL doch bekomme ich es nicht ans laufen mit dem Befehl SDL_ScaleSurfaceRect. Hierbei wir das Bild wieder ohne
Transparenz dargestellt, genau wie auf meinem Game Rechner.
So schauts auf meinem Notebook/HTPC aus (beides ATI karten)
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Zeig mal deinen SDL-Versuch. SDL verlangt mitunter sehr merkwürdige Befehle, wenn man die Transparenz mit übernehmen will bei solchen Aufrufen.
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: 0 Mitglieder und 19 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.