Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 21:30

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 53 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 15:42 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die Aussage bedeutet, dass der Rechner bzw. deine Grafikkarte keine Texturgrößen akzeptiert wie z.B. 100x200 oder 231x554.

Texturen müssen in 2er-Potenzen angegeben werden (neue Grafikkarten kommen mit den oben genannten Größen klar). Also z.B. 256x128 oder 1024 x 512.


(Nebenbei: 1024x768 ist auch keine zweier Potenz.)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 15:47 
Offline
DGL Member
Benutzeravatar

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

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 15:53 
Offline
DGL Member
Benutzeravatar

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.

Edit: Da waren zwei schneller... :)

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 16:05 
Offline
DGL Member

Registriert: So Mai 11, 2008 10:20
Beiträge: 25
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 16:50 
Offline
DGL Member
Benutzeravatar

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.

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 17:08 
Offline
DGL Member

Registriert: So Mai 11, 2008 10:20
Beiträge: 25
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 :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 17:47 
Offline
DGL Member
Benutzeravatar

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 18:02 
Offline
DGL Member

Registriert: So Mai 11, 2008 10:20
Beiträge: 25
Es ist bei JPG und BMP das gleiche.

Was für mich aber jetzt immernoch sehr wichtig ist, ist die Antwort auf die Frage wie ich PNGs laden kann, nur so nebenbei nochmal angesprochen :)

Soweit das ich mit den Texturen spielen kann bin ich glaube ich noch nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 18:05 
Offline
DGL Member
Benutzeravatar

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 18:21 
Offline
DGL Member

Registriert: So Mai 11, 2008 10:20
Beiträge: 25
Vllt gibst Du mir noch einen Tip was Du meinst mit Texturkoordinaten umdrehen.

Code:
  1.   glBegin(GL_QUADS);
  2.     glTexCoord2f(0,0); glVertex3f(-1,-1,0);
  3.     glTexCoord2f(0,1); glVertex3f(-1,1,0);
  4.     glTexCoord2f(1,1); glVertex3f(1,1,0);
  5.     glTexCoord2f(1,0); glVertex3f(1,-1,0);
  6.   glEnd;


Meinst doch sicher glTexCoord2f() oder?

glBitmap braucht um PNGs laden zu können PNGImage, leider ist scheinbar das Projekt nicht mehr auf Sourceforge verfügbar,
zumindest ist der Link tot.

Wenn ich mit der Methode

Code:
  1.   tex := IMG_Load(PChar('D:\Bilder\1_.png'));
  2.   if assigned(tex) then
  3.   begin
  4.     glGenTextures(1, @TexID);
  5.     glBindTexture(GL_TEXTURE_2D, TexID);
  6.  
  7.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  8.     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  9.  
  10.     // Achtung! Einige Bildformate erwarten statt GL_RGB, GL_BGR. Diese Konstante fehlt in den Standard-Headern
  11.     glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);
  12.  
  13.     SDL_FreeSurface(tex);
  14.     end
  15.       else ShowMessage('Texture wurde nicht geladen');


lade bekomme ich zwar etwas angezeigt aber nen Bild ist es nicht ;)

Bild

So sieht das als JPG aus

Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 18:32 
Offline
DGL Member
Benutzeravatar

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 18:34 
Offline
DGL Member
Benutzeravatar

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.

Der LibPNG Link ist nicht tot: http://libpng.sourceforge.net/

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.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 18:50 
Offline
DGL Member

Registriert: So Mai 11, 2008 10:20
Beiträge: 25
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 18:57 
Offline
DGL Member
Benutzeravatar

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 networkmy 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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 15, 2008 19:38 
Offline
DGL Member
Benutzeravatar

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

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 53 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 15 Queries | GZIP : On ]