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

Aktuelle Zeit: Fr Jul 18, 2025 16:42

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



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Meine Texturen sehen farbarm aus
BeitragVerfasst: Mo Jun 26, 2006 20:16 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
hab mir mal ein relativ simples prog geschrieben, um paralax scrolling von hintergründen auszuprobieren.
Mein Problem ist, dass die texturen sehr farbarm dargestellt werden. Die TGAs sind mit 32Bit gespeichert nicht RLE komprimiert und 640x480pixel groß.
Die quads werden mit (GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) geblendet. verwenden tue ich die Textures.pas um texturen zu laden.

Beispiel bilder:


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 26, 2006 20:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Das Gras besteht aus mehreren Schichten übereinander, sehe ich das richtig? Wenn ja, dann könnte ich mir vorstellen, dass das mit dem Alpha-Blending nicht so hinhaut, weil anstatt dass das Gras langsam ausgeblendet wird, wirds nach weiß geblendet.

_________________
"Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0."
- Hal Faber

Meine Homepage: http://laboda.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 27, 2006 00:52 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Als was speicherst du deine Textur?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 27, 2006 01:03 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
ja der Hintergrund besteht aus 8 Lagen, die in einer "for-schleife" erstellt werden, damit es mit der tiefe keine Probleme gibt, gebe ich als "Z-Koordinate" einfach die zählvariable der for schleife an:
layer1 = tiefe 1
layer2 = tiefe 2
....
layerbla = tiefe bla

in wiefern "als was speicher ich sie"? Im Prog liegen sie in einem Array of GLuint vor und die files sind TGAs, wie oben beschrieben. Hmm aber selbst wenn das ranzige dadurch entsteht, dass es ins weiße blendet, dann stellt sich immer noch die frage, warum die farbverläufe allgemein brüchiger ausssehen.

EDIT>> kanns sein, dass die farbtiefe der textures.pas anders ist als die, die ich für die texturen verwende? Ich habe die im Programm nämlich nicht festlegen lassen, sondern die voreinstellungen beibehalten. Anderenfalls könnte es eventuell mit den unterschiedlich langen Kantenlängen zu tun haben... <<EDIT

danke schon mal für die antworten

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Meine Texturen sehen farbarm aus
BeitragVerfasst: Di Jun 27, 2006 08:08 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
So dann fange ich mal an. Das kann unterschiedliche Gründe haben.

Hintergrundverlauf:
1. Deine Bildschirmmodus steht aus irgendwelchen Gründen auf 16 Bit. Vollbild. Oder im Windows.

2. Deine Texturen werden normal mit als GL_BGRA (o. GL_RGBA) erstellt. Das bietet dem Treiber die Möglichkeit sagen zu können. "Ach weißte ich will die aber nur als 16Bit ablegen." Dann hast du sie zwar überall als 32 Bit rumliegen aber der Treiber beschneidet sie kurzerhand. Da solltest du mal ausprobieren wie es aussieht, wenn du GL_BGRA8 oder GL_RGBA8 übergibst. Oder eben die Einstellung im Treiber verändern. ATI hatte da vor ner ganzen Weile auch mal einen Fehler im Treiber. Ich tippe mal darauf, das deine Texturen beschnitte abgelegt werden. Diese klaren Farbabtrennung ist typisch dafür.

Kanten deiner Texturen:
Die Frage hast du selber schon beantwortet. "640x480pixel groß" und "verwenden tue ich die Textures.pas"

Die Texturen benutzt zum Übertragen der Bilder die Methode gluBuildMipMaps. Diese Methode wiederrum überträgt nur PowerOfTwo Texturen. Alle anderen werden in der Größe verändert. Und zwar normal immer größer gerechnet. Dadurch werden deine Texturen aber künstlich wich gerechnet. Und da du vorher mehr oder minder harte Kanten im Alpha hattest werden die weich. Genau so siehts auch mit deinem RGB Werten aus. Leider hast du durch die weichen übergange dann das Problem, dass du teilweise RGB Werte siehst die du sonst nicht sehen würdest. Das ist der Helle Rand um deine Texturen.

Lange Rede kurzer Gin. Das sind nicht deine Texturen so wie du sie haben willst. Du musst deine Texturen jetzt entweder zerschneiden oder du benutzt anstelle der gluBuildMipMaps die Normale glTexImage und dann entweder GL_ARB_texture_non_power_of_two oder Texture Rectangle.

http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_non_power_of_two.txt

http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_rectangle.txt
http://oss.sgi.com/projects/ogl-sample/registry/NV/texture_rectangle.txt
Eine EXT Variante gibt es auch noch aber nicht bei SGI.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 27, 2006 11:00 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
okay ich habe die größe der texturen nu auf 512x512 gesetzt und stretche die über die Bildschirmgroßen quads. Das weichzeichnen stört mich bei diesem Prog allerdings relativ wenig.

So der Effekt ist noch der selbe und das Bild sieht unverändert aus. Wo und wie strell ich denn die GL_RGBA8 bzw. GL_BGRA8 ein? Hab mich bereits im Textur-tut eingelesen und bin auf diesen Befehl gestoßen :

glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);

wenn das die Lösung ist, dann muss ich ja die Texturgröße mit angeben, aber wo bekomme ich die her? kann ich die pointer einfach auf mein GLUint zeigen lassen??[/img]

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 27, 2006 11:47 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Der Zerhackte hat geschrieben:
glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);

Du musst das GL_BGRA8 bzw. GL_RGBA8 anstelle des GL_RGB angeben.
oO(hoffe ich erzähle nichts falsches...)

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 27, 2006 11:58 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Doch ein bisschen. ;-) Die Stelle stimmt aber du solltest GL_RGB durch GL_RGB8 ersetzen. Ein Alphakanal existiert ja nicht.

Das mit dem Pointer und gluint habe ich nicht verstanden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 28, 2006 14:09 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
In dem Beispiel steht doch tex^.w und tex^.h etc.. ist doch ein pointer auf die textur. In dem Beispiel, dass ich mir angesehen hatte, wurde dieser pointer extra gelegt, kann ich auch einfach nen pointer auf nen Gluint zeigen lassen und das genauso angeben... muss ich dass überhaupt?

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 28, 2006 14:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also diese Methode möchte gerne einen gluint für die Höhe und einen für die Breite. Wo du die her nimmst ist dir überlassen. In deinem Beispiel war Tex ein Pointer auf einen Record oder so etwas. Und dieser Pointer muss dereferenziert werden um an die richtigen Variablen zu kommen. Das macht man mit dem ^. Dann wäre es so als ob man ein Record vor sich hat obwohl man aber eigentlich ein Pointer auf dieses hat. Die Methode bekommt an der Stelle nur 2 Zahlen übergeben. Bei dem letzten Parameter möchte er allerdings einen Pointer auf die Daten haben. Deswegen muss der Texpointer erst dereferenziert werden damit man an die Variable kommt in der der Pointer auf die Daten steckt.

Ich hoffe das war nicht zu verwirrend. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 29, 2006 05:30 
Offline
DGL Member

Registriert: Fr Nov 18, 2005 00:44
Beiträge: 57
ähhhh .... okay...... das kapitel mit den Pointern hat mich immer etwas sehr stark verwirrt...

wie würdet ihr denn die Farbtiefe sichergehend auf 32bit umschalten?? evtl ein kleines code Beispiel? Nicht dass ihr glaubt, das ich c&p, aber mit Beispielen lernt es sich echt sehr viel einfacher. (mit pointern werd ich mich trotzdem noch beschäftigen, da ich mir auch noch ein modeller schreiben will und per pointer kann man sich dann etwas speicher sparen^^ )

nebenbei hab ich mir die infos aus euren letzten posts in meinen anderen Fragen sehr zu Herzen genommen und außreichend ausprobiert. Ich muss sagen, dass ich viele witzige Sachen herausgefundne habe... wenn es auch nur chaotische zufalls ergebnisse waren :) .

Wie ist das jetzt eigentlich genau gehandhabt. Schalte ich die farbtiefe für mein Programm, oder für eine Textur um? Für eine Textur wäre dass ja relativ blödsinnig, allerdings habe ich den Befehl nach einem glbindbla befehl gefunden, was ja eigentlich heißen würde, dass sich das nur auf die gewählte textur auswirkt ... ODA?

Also alles unterm strich muss ich hier noch stark aufgeklärt werden, da mir selbst die tuts und wiki hilfen nicht wirklich brachten was ich hoffte zu finden.

_________________
ist Ihnen schon mal aufgefallen, dass wenn Sie beim Wort Schlagersängerinnen die ersten 6 Buchstaben streichen, das 'e' durch ein 'f' ersetzen, die nächsten 7 Buchstaben rückwärts lesen und dann ebenfalls elemenieren und zusätzlich die beiden nebeneinanderstehenden n's durch ck ersetzen, das Wort 'ficken' ergibt?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 29, 2006 07:48 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also zum Thema Farbtiefen.

Der OpenGL Kontext richtet sich immer danach was im Windows für eine Farbtiefe angegeben wurde. Wenn jemand 16 Bit eingestellt müsste es so aussehen wie es bei dir aussieht. Da würde ich empfehlen dort 32 Bit einzustellen. (Für Grafik generell) Aus deinem Programm herraus geht das auch aber beeinflusst das nicht nur deine Anwendung sonder alle. Und das solltest du nur machen, wenn du deine Anwenung im Vollbild laufen lassen möchtest. Du solltest auf keinen Fall die Farbtiefe oder sonst etwas verändern, wenn du im Fenster läufst. Außer deine Anwendung ist genau dafür gedacht. Versteht sich. ;-)

Die Farbtiefe der Textur kannst du mittels GL_RGB8 oder sonst etwas regulieren. In Quake3 wird unter anderen auch zwischen Textur und Bildschirmfarbtiefe unterschieden und es macht schon einen Unterschied ob man 16 Bit Texturen benutzt oder 32 Bit Texturen und 16Bit Bildschirm. Das Ergebnis bei Letzterem war weicher. Denke aber mal das lag nur daran, weil erst zum Schluss auf 16 BIt reduziert wurde und nicht gleich schon von begin an auf 16 gearbeitet wurde.

Aber wenn du im Windows 32 Bit eingestellt hast und GL_RGB8 oder GL_BGR8 verwendest, dann wüsste ich keinen weiteren Grund warum es nicht gut aussehen sollte.

Und Pointer sind sehr leistungsfähig und vom Prinzip her sehr einfach zu handhaben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 29, 2006 23:21 
Offline
DGL Member

Registriert: Sa Jan 22, 2005 21:10
Beiträge: 225
Falls es auch darum geht, dass das Gras an den oberen Rändern so blass aussieht: Ich könnte mich irren, aber für mich sieht das so aus, als würde es nicht nur an der Farbtiefe sondern auch an den verwendeten Texturen liegen. Kannst du die vllt mal zeigen? Ich glaube, dass nicht nur der Alphakanal einen Verlauf ins Transparente hat, sondern auch die Farbkanäle einen Verlauf zu weiß hin, obwohl die komplett grün sein müssten.

_________________
[18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay

hi, i'm a signature viruz, plz set me as your signature and help me spread :)


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


Wer ist online?

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