Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn ich das richtig sehe, solltest du vorher die Textureinheit wieder ausschalten, also glDisable(GL_TEXTURE_2D) aufrufen. Am besten machst du das nachdem du dein Quad mit der Textur gerendert hast.
Und benutz anstatt Code- doch bitte Pascal-Tags
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 Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Um evtl noch etwas weiter ins Detail zu gehen. OpenGL ist eine Statemaschine und wenn du etwas aktiviert hast dann bleibt es aktiv bis es wieder explizit aus gemacht wird. Und damit wird in deinem Falle die Farbe des Texels, welches als letztes gesetzt war (Textur und Koordinate), auf alle anderen Primitive angewendet. Ist im übrigen bei allem so. Also Licht, Shader, etc...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
In der Pespektive ist das leider nicht ganz so einfach zu sagen. Das müsste man berechnen, da die Breite sich natürlich auch in Anhängigkeit der Tiefe verändert. Wenn es allerdings um 2D Darstellung geht solltest du dir mal glOrtho anschauen. Damit kannst du die Einheiten so einstellen, dass es sich wie in der GDI verhält.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ja du musst dann natürlich die DLLs mit ausliefern.
Zu den Texturen: Du lädst diese mit dem Namen 'bg.JPG'. Das gibt an, dass das System die Datei in dem aktuellen Verzeichnis sucht. Das muss aber nicht das Verzeichnis sein in dem sich auch die Texturen befinden. Also solltest du vor jeder Datei immer das aktuelle Verzeichnis der EXE anhängen. Weiß nicht ob so auch der Backslash am Ende vorhanden ist.
Code:
ExtractFilePath(ParamStr(0))
Außerdem sollte die Größe der Texturen immer eine Potenz von 2 haben. Denn nicht jede Grafikkarte kommt damit klar, wenn das anders ist. Dann erscheint die Textur einfach weiß oder es wird richtig langsam. Deswegen solltest du auch, wenn du deine Anwendung veröffentlichen willst, die OpenGL Fehler abfragen und in einer Logdatei festhalten. Denn das vereinfacht die Fehlersuche etc. Fehlercodes natürlich nur mit einer Angabe einer nachvollziehbaren Codestelle. Ansonsten bringt die Info nichts.
Zitat:
Code:
tex := IMG_Load('bg.JPG');
ifassigned(tex)thenbegin
...
end;
Und so etwas ist auch potentiell riskant. Denn wenn die Datei nicht geladen werden konnte, dann geht es sang und klanglos unter. Sollte ein Fehler beim Laden auftreten wird also niemand etwas davon mitbekommen. Nur weil kein Fehler direkt erkennbar ist heißt es nicht, dass auch kein Fehler passiert ist.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Lossy eX hat geschrieben:
Zu den Texturen: Du lädst diese mit dem Namen 'bg.JPG'. Das gibt an, dass das System die Datei in dem aktuellen Verzeichnis sucht. Das muss aber nicht das Verzeichnis sein in dem sich auch die Texturen befinden. Also solltest du vor jeder Datei immer das aktuelle Verzeichnis der EXE anhängen. Weiß nicht ob so auch der Backslash am Ende vorhanden ist.
Code:
ExtractFilePath(ParamStr(0))
Ich regle das immer so, dass ich eine globale AppPath-Variable habe, die dann genau den Wert enthält. Backslash wird kostenlos mitgeliefert, wenn man ExtractFilePath nimmt.
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 meinte, dass ich mir diese Global anlege, die existiert nicht in irgendeiner mitgelieferten Unit (obwohls zumindest für FPC mal ne Idee wäre), sodass ich nicht immer ExtractFilePath(...) schreiben muss. Das bringt natürlich auch ein wenig performance, wenn nicht immer der Pfad neu berechnet wird.
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: Fr Dez 28, 2007 20:24 Beiträge: 62 Wohnort: Berlin
Die Datei bg.jpg ist im Verzeichnis vorhanden aber sie wird einfach auf anderen Rechnern nicht im Programm angezeigt, auf meinem Rechner kein Problem, selbst aus der zipdatei raus ohne extrahieren.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Dann beachte den Hinweis von Lossy, dass die Textur auf höhe und breite eine Potenz von Zwei haben sollte, also 8, 16, 32, 64, 128, 256 oder sowas.
Wie äußert sich das nicht-anzeigen? Werden die Objekte schwarz oder weiss?
Weiss hieße, dass die Textur nicht geladen wird, bei schwarz liegt der Fehler irgendwo anders.
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++
Frohes Neues zurück, auch an alle anderen hier.
Hm, hast du mal eine Fehlermeldung ausgeben lassen, wenn Assigned(Tex) false zurückgibt?
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 25 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.