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

Aktuelle Zeit: Fr Jul 18, 2025 23:20

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



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Texturen unter Vista ?
BeitragVerfasst: Mo Feb 12, 2007 10:55 
Offline
DGL Member

Registriert: Do Feb 08, 2007 10:48
Beiträge: 18
Wohnort: nähe Frankfurt
Hallo Ihr,

hat jemand schon dieses Problem gehabt?

Ich hab ein Programm geschrieben das einfach nur eine Fläche anzeigt auf der eine Textur bewegt wird.
Hab die Textur so geladen wie im Tutorial L4 gezeigt wird.
Mein Entwicklungsrechner hat als Betriebssystem WinXP und da ging das auch alles ohne Probleme...

Dann wollte ich das Programm auf dem PC meines Bruders Testen weil dieser um einiges Leistungsfähiger ist..
Dieser hat jetzt Windows Vista Installiert und nun war keine Textur mehr zu sehen sondern nur eine Weiße Fläche-

Kennt jemand dieses Verhalten?
einige andere Beispiel Programme (unter anderem das hier) gingen -
allerdings waren diese auch non vcl

falls ihr noch mehr Infos braucht sagt mir was genau
- nur mein Code ist nicht unbedingt so ganz schön zu lesen...

Leuchtende Grüße

Stefan

(alias Light)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 12, 2007 12:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also OpenGL unter Vista sollte 100%tig Identisch zu dem sein was du auch unter XP hast. Zu mindest dann wenn es komplett von der Hardware unterstützt wird. Leider greift Vista aber auf einen DirectX OpenGL Wrapper zurück falls kein passender Treiber installiert ist oder Sonnenflecken existieren. In diesem Falle wird OpenGL simuliert. Und zwar nur die OpenGL Version 1.4. Ich denke mal das ist bei dir unter Vista der Fall.

Ich tippe da mal so spontan darauf, dass die Größe deiner Textur keine Potenz von 2 hat. Also 64, 128, 256, 512 etc. Deine Grafikkarte wird das unterstützt aber der Wrapper von Vista wird es nicht. Und deswegen kann er keine Textur darstellen. Also bekommst du eine weiße Fläche.

PS: Muss aber gestehen, dass ich bisher noch nicht mit Vist gearbeitet habe von daher ist das alles nur ne Vermutung.

PPS: Um heraus zufinden wie der Hersteller deines OpenGL Treibers heißt kannst du glGetString aufrufen. Als Parameter genügt GL_VENDOR. Wenn da Microsoft drinne steht dann läuft es im Wrapper.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 12, 2007 15:07 
Offline
DGL Member

Registriert: Do Feb 08, 2007 10:48
Beiträge: 18
Wohnort: nähe Frankfurt
Als mit der Größe der Textur hab ich Extra darauf geachtet das es ne Potenzgröße ist! stand ja auch so im Tut das man da drauf achten sollte :wink:

Mal sehn der Rest meines Programms funktioniert bis jetzt...
und Texturen müssen nicht unbedingt sein - noch nicht....

Danke für die Hilfe!
ich werd mal den Hersteller auslesen!

Leuchtende Grüße

Stefan


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 13, 2007 11:31 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab auch Vista und bei ATI wurden die Treibe stark verbessert, dazu zählt auch, das sich das Vehalten von funktionen bei einigen Befehlen verändert hat. Ich nutzte unter Vista ein eigenen Texturloader(sehr billiger BMP loader) und der läuft wie der rest von mein zeug ohne Probleme.

Im Tutorial wird es per SDL geladen, wenn du wirklich SDL nutzt, dann solltest du überprüfen ob die restlichen dlls wie libpng.dll,jpeg.dll,... dabei sind.

_________________
"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: Di Feb 13, 2007 11:54 
Offline
DGL Member

Registriert: Do Feb 08, 2007 10:48
Beiträge: 18
Wohnort: nähe Frankfurt
Hi Tak2004,

jetzt weiß ich woran es -liegt!
Ich hab PNG-Texturen geladen :lol:
und dann liegt es sehr sehr nahe das einfach die passende libpng.dll fehlt!

Was gibt es denn für (andere?) Gute Möglichkeiten Texturen zu laden?
Mein Lieblingsformat ist absolut PNG :wink:

Übrigens ich hab die Hersteller auslese Funktion bis jetzt nur auf meinem Rechner (XP Pro) ausgeführt -
dort gibt sie "Microsoft Cooperation" zurück!
Das würde bedeuten das Meine Grafikkarte (Matrox Millennium G450 Dual Head)
kein OpenGL Unterstützt sondern nur Windows das dann Softwaretechnisch macht?
Dann Müsste ich mich ja auch nicht wundern das die Framrate sehr niedrig ist - zumindest im Vergleich zu der bei meinem Bruder^^ weil dieser hat den um stufen besseren pc *g*
(dann weiß ich jetzt endlich für was man schnelle Grafikkarten braucht...)

Leuchtende Grüße

Stefan


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 13, 2007 12:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
DDS ist ein sehr gutes Format, es unterstützt Textur Kompremierung und Mipmaps.
Die Kompremierung ist DXT1-5 basierend also im gegenteil zu Jpeg und anderen Formaten, wird dieses Von der GPU untertützt und kann direkt in die GPU geladen werden, ohne erst was zu dekompremieren. Dies hat ein paar Vorteile, schnellerer Ladeprozess, schnelleres Rendern(es werden weniger daten vom vram zur gpu geschickt und das umrechnen von dxt zu normalbild ist nicht schwer), mehr Platz auf dem VRAM(wenn die grenze erreicht ist werden die texturen zwischen ram und vram ständig hin und her geschickt und das kostet zeit).

Ich will in kürze vollständig auf DXT basierte Texturen umsteigen.

_________________
"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: Di Feb 13, 2007 12:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Tak: Du hast bei deiner Aufzählung aber 2 Dinge unterschlagen. DXT kann mitunter recht häßliche Artefakte bilden, da es genau wie JPEG eine verlustbehaftete Kompression ist. Speziell wenn sich 3 grundsätzlich unterschiedliche Farben in einem Block (Die Blöcke werden intern verwendet) befinden. Und DXT hat als Datengrundlage nur 16 Bit Farbtiefe. Bei besonders feinen Strukturen oder sehr weichen Verläufen ist DXT somit ziemlich unbrauchbar. Das immer unter der Vorraussetzung, dass man DXT nicht zweckentfremdet und dann mit irgendwelchen Shadern unständlich wieder so hinbiegt. Das aber nur um auch mal die dunkle Seite von DXT aufzuzeigen.

Light: Ja dein OpenGL läuft im Softwaremodus. Sprich es wird alles auf der CPU berechnet. Allerdings sollte die G450 durchaus in der Lage sein OpenGL darstellen zu können. Von daher würde ich dir mal raten den aktuellsten Treiber von Matrox zu installieren. Das dürfte wohl auch andere Sachen beschleunigen, denn ich denke, dass du da den Standardtrieber von Windows benutzt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 13, 2007 13:10 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Lossy eX hat geschrieben:
Tak: Du hast bei deiner Aufzählung aber 2 Dinge unterschlagen. DXT kann mitunter recht häßliche Artefakte bilden, da es genau wie JPEG eine verlustbehaftete Kompression ist. Speziell wenn sich 3 grundsätzlich unterschiedliche Farben in einem Block (Die Blöcke werden intern verwendet) befinden. Und DXT hat als Datengrundlage nur 16 Bit Farbtiefe. Bei besonders feinen Strukturen oder sehr weichen Verläufen ist DXT somit ziemlich unbrauchbar. Das immer unter der Vorraussetzung, dass man DXT nicht zweckentfremdet und dann mit irgendwelchen Shadern unständlich wieder so hinbiegt. Das aber nur um auch mal die dunkle Seite von DXT aufzuzeigen.


Da hast du natürlich recht, naja man kann ja noch dds unkompremiert speichern und dann mit zlib in ein archiv packen.
Wenn man nicht alles stur in ein archiv packt sondern alle files einzeln rein legt kann man so sagen ob kompremiert werden soll oder nicht.
Damit wird erstmal der lesezugriff maximiert und man kann die unkompremierten dds files noch ein bischen kleiner machen.

Mit den Custom DXT Shader würde ich mal denken, spielst du auf oc2k1 an ^^.

_________________
"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: Di Feb 13, 2007 13:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
TAK2004 hat geschrieben:
Mit den Custom DXT Shader würde ich mal denken, spielst du auf oc2k1 an ^^.

Ein bisschen. ;) Wollte nur vorbeugen. Das ist ja bekanntlich besser als nach hinten umfallen.

Aber ja Möglichkeiten gibt es genug.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 14, 2007 00:24 
Offline
DGL Member

Registriert: Do Feb 08, 2007 10:48
Beiträge: 18
Wohnort: nähe Frankfurt
Hi Ihr,

hab jetzt einfach mal ausprobiert und den Neusten Grafiktreiber von Matrox installiert!
Das Ergebnis ist sehr komisch:
Die Info zeigt immer noch "Microsoft Cooperation" an!
Und ich hab keinen Geschwindigkeitszuwachs sondern Verlust!

Vor der Installation hatte ich bei meinem Momentanen Projekt ca 27 FPS.
Nun sind es nur noch 17 FPS.

Kann sich das jemand erklären?

Die Grafikkarte hat 32MB Grafikspeicher... das ist halt auch nicht so die Welt^^
Und ich betreibe das Ganze ja auch als Dual-Head-System also muss sie ja auch zwei Bildschirme Versorgen...

Das einzige was jetzt noch nicht auf dem Aktuellsten Stand ist ist das Bios der Grafikkarte.
Aktuelle Version: 1.2 b21
im Web Verfügbare Version: BIOS - 2.58.002
aber das einfach mal so zu testen ist mir doch ein bisschen heikel - weil da sollte man sich vorher eine RettungsCD-Erstellen und das ist mir momentan zuviel Aufwand^^

Leuchtende Grüße

Euer müder Stefan


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 15, 2007 09:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
TAK2004 hat geschrieben:
DDS ist ein sehr gutes Format, es unterstützt Textur Kompremierung und Mipmaps.
Die Kompremierung ist DXT1-5 basierend also im gegenteil zu Jpeg und anderen Formaten, wird dieses Von der GPU untertützt und kann direkt in die GPU geladen werden, ohne erst was zu dekompremieren. Dies hat ein paar Vorteile, schnellerer Ladeprozess, schnelleres Rendern(es werden weniger daten vom vram zur gpu geschickt und das umrechnen von dxt zu normalbild ist nicht schwer), mehr Platz auf dem VRAM(wenn die grenze erreicht ist werden die texturen zwischen ram und vram ständig hin und her geschickt und das kostet zeit).

Ich will in kürze vollständig auf DXT basierte Texturen umsteigen.


Wie geht das denn unter OpenGL? Ich hab momentan einen eher umständlichen, ziemlich einfachen Texturloader in C++. Wie kann man denn direkt solche Formate an OpenGL weiterreichen?

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 15, 2007 10:32 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du Lädst die Datei wie jedes andere Bild auch. Nur eben, dass die Daten etwas kleiner sind als unkomprimierte Bilder. Und diese kannst du an glCompressedTexImage2D übergeben. Als internes Format hast du dann eine der Folgenden zur Verfügung.
Code:
  1. GL_COMPRESSED_RGB_S3TC_DXT1_EXT
  2. GL_COMPRESSED_RGBA_S3TC_DXT1_EXT
  3. GL_COMPRESSED_RGBA_S3TC_DXT3_EXT
  4. GL_COMPRESSED_RGBA_S3TC_DXT5_EXT


Wenn du dieses Format mit unkomprimierten Daten an glTexImage2D übergibst, dann werden diese Daten von OpenGL komprimiert und mit glGetCompressedTexImage kannst du dieses Daten im DXT Format wieder abrufen.

Im Forum gab es auch mal eine Unit die nur DDS laden konnte. Weiß allerdings nicht mehr wo die steckt. Aber zu Not kannst du auch in die glBitmap schauen. Wobei das wahrscheinlich etwas undurchsichtiger werden dürfte.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 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.008s | 15 Queries | GZIP : On ]