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

Aktuelle Zeit: Fr Jul 18, 2025 08:05

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Mär 05, 2009 07:09 
Offline
DGL Member
Benutzeravatar

Registriert: Do Feb 21, 2008 22:10
Beiträge: 89
Wohnort: Boppard
Siehe Titel.

Weiß jmd. woher das kommen kann?
Also ich meine hier einen wirklich großen Lichtfleck!!
Es ist da einfach weiß.

MFG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 05, 2009 09:31 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ist das tatsächlich ein Fehler oder tut OpenGL nur genau das was du ihm gesagt hast?

Wenn du zum Beispiel die Farbe auf weiß gestellt hast und du dann irgendwelche Primitive (zum Bespiel durch gluSphere) zeichnest, dann erscheint auch nur ein weißer Fleck. Was auch ein vollkommen richtiges Verhalten ist. Allerdings kann man anhand deiner "Beschreibung" nur raten was da eigentlich passieren sollte etc.

Wenn du kein Licht an hast dann könntest du das Licht aktivieren.

Wenn du Licht bereits an hast und dein Licht durch glScale verändert wurde, dann solltest du glEnable(GL_NORMALIZE) aktivieren.

Wenn das alles nicht das ist was du suchst, dann solltest ein paar mehr Infos springen lassen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 05, 2009 10:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Feb 21, 2008 22:10
Beiträge: 89
Wohnort: Boppard
Also es sieht so aus:

Funktioniert:
Code:
  1.  
  2.   gluSphere(GluNewQuadric,CollisionOpts.Rad,12,12);
  3.  


Funktioniert nicht:
Code:
  1.  
  2.   glScalef(CollisionOpts.Rad,CollisionOpts.Rad,CollisionOpts.Rad);
  3.   gluSphere(GluNewQuadric,1,12,12);
  4.  


PS: Ich weiß das das Scale unsinnig ist aber das hat nen anderen Grund.

EDIT:
CollisionOpts.Rad < 1 (=0.5)
Wenn ich dagegen 2 als skalierungswert einsetze, gibt es diesen Fleck nicht!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 05, 2009 10:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Feb 21, 2008 22:10
Beiträge: 89
Wohnort: Boppard
Habe etwas bemerkt:

Wenn ich glEnable(GL_NORMALIZE) aufrufe, funktioniert das Licht!

Aber das dürfte doch nicht so sein?!

Immerhin kann ich meine Welt u.a. einfach so skalieren, da tritt dieser Fehler nicht auf. Warum dann bei gluSphere?
(Letzteres prüfe ich aber nochmal)
EDIT: Nein es scheint nicht so zu sein.
Aber soll das heißen, ich kann keine Objekte skalieren, ohne dass dann die Normalen falsch sind?
Also ich habe meine Welt in einer DisplayList und ich kann die also nicht einfach vergrößern / verkleinern,
außer ich verwende GL_NORMALIZE?!

Gibt es keine Alternative?

MFG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 05, 2009 12:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ach es geht um Licht? Falls das etwas ironisch klingt. Das täuscht. Nicht nur etwas.

Die Normalen werden durch das Skalieren und Rotieren mitverändert. Die Lichtberechnung von OpenGL beruht aber darauf, dass die Normalen eine Länge von 1 haben. Bzw länger und kürzere Normalen haben Einfluss auf die Intesität des Lichtes. Dafür gibt es GL_NORMALIZE. Das sorgt dafür, dass beim Skalieren die Normalen angepasst werden damit deren Länge immer 1 ist.

Steht aber auch im Licht Tutorial.
http://wiki.delphigl.com/index.php/Tutorial_Lektion_8#L.C3.A4nge_.3D_1.3F



Neben GL_NORMAL gibt es noch GL_RESCALE_NORMAL_EXT aus der Erweiterung GL_EXT_rescale_normal. Allerdings muss ich gestehen. Ich weiß nicht mehr genau was diese Erweiterung macht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 05, 2009 13:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Feb 21, 2008 22:10
Beiträge: 89
Wohnort: Boppard
Also muss ich entweder GL_NORMALZE anschalten oder diese Extension verwenden?

(3. Möglichkeit wär natürlich kein glScalef sondern schon richtige Größen für Normalen und Objekte :roll: )

Weißt du, wo ich etwas über diese Extension in erfahrung bringen kann (Außer nur Google zu sagen :evil:)?

MFG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 05, 2009 14:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich halte Google definitiv nicht für die Antwort auf alle Frage. Wenn man Dinge sucht deren Legalität schon fast bedenklich ist, dann ist man bei Google sicher richtig. Aber sonst gibts genügend Alternative die sich vor allem nicht so offen manipulieren lassen. Abgesehen davon sind solche Bröckchenposts nicht mein Stil.

Was diese Erweiterung angeht. Da habe ich den Link auf die Spezifikation gepostet. Dort steht wirklich alles drin was man über diese Erweiterung wissen muss. Ein besseres Werk wird man nicht finden. Denn solch eine Spezifikation beschreibt genau was die Erweiterung bietet und wie sie sich zu verhalten hat etc. Nur ist diese eben komplett auf Englisch. Es ist auch gut möglich, dass ich mich was diese Erweiterung angeht sogar gerade vertue. Letzte mal, dass ich was mit OpenGL Licht gemacht habe ich bestimmt schon 6-7 Jahre her. Und ich bin absolut unfit was diese ganzen Vektor und Matrixrechnungen angeht. ;)

Alternativ kannst du es auch einfach mal aktivieren und schauen ob es sich besser verhält oder nicht. Eventuell auch in Kombination mit GL_NORMALIZE.

Was ein Verzicht auf glScale angeht wirst du sicher recht haben. Wenn die Normalen durch Skalieren nicht verändert werden dann bleibt die Lichtberechnung auch gleich. Wenn du das Skalieren also nur brauchst um deine Kugel von einem Radius 1 auf 2 zu erweitern, dann geht das auch ohne. Selber ein Skalieren von beliebigen Objekten zu berechenn ist aber nicht sinnvoll. Aber dafür gibts ja eigentlich GL_NORMALIZE.


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


Wer ist online?

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