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

Aktuelle Zeit: So Aug 03, 2025 11:02

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 26, 2003 20:35 
Hi!
I habe da mal ein paar Fragen

1) macht es ein unterschied ob ich 1.0 oder 1 schreibe. Wird es dann als float anstatt integer angesehen?

2) Bei Kollision detection (nur theoretisch): Ich eine Fläche habe und ein Punkt, der auf einem Kurs ist, der ihn durch die Fläche führt. Die Position des Punktes wird nur jede Sekunde aktualisiert. Was verhindert das der Punkt nicht einfach über die Fläche rüberspringt und es somit nie zu einer Kollision kommt. Eine mögliche Lösung ist das man schaut ob der Punkt rechts oder links davon ist, dann muss man aber für alle Punkte sich merken, ob sie links oder rechts relativ zu den anderen Objekten sind. Das wäre dann eine enorme Datenmenge. Ich habe das Gefühl ich habe da was ganz Entscheidendes bei der Kollision detection verpasst.

3) Ich kriege die Displaylisten nicht so ganz hin. Um genau zu sein das Teil mit 30%-40% schneller. Ich kriege irgendwie keine extra fps raus.(Ja, vsync ist garantiert aus). Als versuch habe ich 1000 Sin+Cos Berechnungen gemacht, genau wie im Redbook. Mit oder ohne Displaylisten kriege ich ~66 fps.


Code1:
OnCreate:
glNewList(16, GL_COMPILE);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_POLYGON);
for i:=1 to 1000 do
begin
cosine:=cos(i*2*PI/100.0);
sine:=sin(i*2*PI/100.0);
glVertex2f(cosine,sine);
end;
glEnd();
Im Draw:
glCallList(16);

Code2:
On Draw:
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_POLYGON);
for i:=1 to 1000 do
begin
cosine:=cos(i*2*PI/100.0);
sine:=sin(i*2*PI/100.0);
glVertex2f(cosine,sine);
end;
glEnd();

4) OGL Nebel ist ja schon und gut, geht es auch das der Nebel beispielsweise nur über dem Boden hängt, sowie in Q3 (Ohne meine eigene Nebel Funktion zu schreiben wenn möglich)?

mfg
Conspirator


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 26, 2003 21:10 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 17:14
Beiträge: 188
Wohnort: Hannover/Lüneburg
Zu 3): Du erstellst die Dispalylisten falsch, und rufst sie zudem auch falsch auf. So kann das nicht funktionieren. Richtig wäre es etwa so:
Code:
  1.  
  2. begin
  3.   DisplayList := glGenLists(1); // erstellt eine Displayliste
  4.   glNewList(DisplayList, GL_COMPILE);
  5.   glBegin(GL_POLYGON);
  6.     ...
  7.   glEnd;
  8.   glEndList;
Zum Zeichnen dann einfach
Code:
  1. glCallList(DisplayList);
Displaylist ist eine einfache Variable vom Typ TGLUInt.

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 26, 2003 21:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
1) macht es ein unterschied ob ich 1.0 oder 1 schreibe. Wird es dann als float anstatt integer angesehen?

In Delphi gibts keinen Unterschied, da das Typecasting intelligenter behandelt wird als unter C.Dort kann das je nach Fall schonmal nen Unterschied machen.

Zitat:
2) Bei Kollision detection (nur theoretisch): Ich eine Fläche habe und ein Punkt, der auf einem Kurs ist, der ihn durch die Fläche führt. Die Position des Punktes wird nur jede Sekunde aktualisiert. Was verhindert das der Punkt  nicht einfach über die Fläche rüberspringt und es somit nie zu einer Kollision kommt. Eine mögliche Lösung ist das man schaut ob der Punkt rechts oder links davon ist, dann muss man aber für alle Punkte sich merken, ob sie links oder rechts relativ zu den anderen Objekten sind. Das wäre dann eine enorme Datenmenge. Ich habe das Gefühl ich habe da was ganz Entscheidendes bei der Kollision detection verpasst.

Im Normalfall testet man bei ner Kollisons mit ner Linie die in die Richtung der Bewegung der Kugel zeigt, und prüft ob diese Linie ein Dreieck durchschneidet (Ray-Triangle-Intersektion).Diese Linie verlängert man dan je nach Aktualisierungszeit der Kollisionsprüfung, um zu garantieren das die Kollision auch immer stattfindet.

Zitat:
4) OGL Nebel ist ja schon und gut, geht es auch das der Nebel beispielsweise nur über dem Boden hängt, sowie in Q3 (Ohne meine eigene Nebel Funktion zu schreiben wenn möglich)?

Das nennt sich volumetrischer Nebel, und lässt sich neuerdings über glFogCoordEXT realiseren.Damit kann man für jedes Vertex eine eigene Nebelkoordinate angeben, und solche Effekte recht einfach realisieren.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 27, 2003 18:31 
Danke für diese antworten aber eine Frage hab ich noch
:das mit der displayliste
wenn ich das richtig verstehe ist in dem beispiel von Thunderman
Displaylist nur ein integer, ob ich da jetzt schon ein wert rein tue oder eine var gebrauche ist doch eigentlich egal. Das sollte doch nicht verursachen das mein extra fps der Displaylist verschwinden, darum geht es mir nämlich.

mfg
Conspirator


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 27, 2003 18:47 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 17:14
Beiträge: 188
Wohnort: Hannover/Lüneburg
Das ist ein reiner Integer. Die Sache ist nur, dass in dieser Variablen die ID gespeichert wird, mit der OpenGL dann auf die Displaylist zugreift. Wenn du da eine feste Zahl nimmst, geht das natürlich nicht.

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 27, 2003 22:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du kannst dir das vom Prinzip so vorstellen als würdest du mit Hilfe von GetMem einen Speicherbereich reservieren. Da bekommst du einen Pointer zurück. Den darfst du ja auch nicht einfach so verändern bzw. durch einen fixen Wert ersetzen.


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


Wer ist online?

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