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

Aktuelle Zeit: Mi Jul 09, 2025 20:07

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Jan 11, 2007 20:48 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
Habe mit hilfe des folgendes codes (http://wiki.delphigl.com/index.php/Kugel) eine Kugel erstellen können...
Aber es ist nicht sehr elegant, dass es jedesmal immer wieder neu berechnet werden muss... Deswegn frag ich euch, wie ich die Koordinaten der einzelnen Punkte in einem array abspeichern kann. Die beste lösung ist glaub ich ein 2d array, wo ein vector mit 3 Elementen (x,y,z) abgespeichert werden kann. leider weiss ich einfach nicht, wie genau ich das abspeichern muss. also welche punkte zu welchen indexes gehören. vielleicht könnt ihr mir das sagen.

danke, rob!

_________________
"As the enemy went to heaven,
we stayed in hell!"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 11, 2007 20:55 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Rob,

wenn du deine Kugel in einer
Displayliste abspeicherst, brauchst du das Array nicht und die Kugel wird nur einmal berechnet.
:D

Viele Grüße
dj3hut1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 11, 2007 21:06 
Offline
DGL Member

Registriert: So Jan 23, 2005 13:21
Beiträge: 46
Wohnort: Vietnam
dj3hut1 hat geschrieben:
Hallo Rob,

wenn du deine Kugel in einer
Displayliste abspeicherst, brauchst du das Array nicht und die Kugel wird nur einmal berechnet.
:D

Viele Grüße
dj3hut1


nicht ganz... ich will die kugel nämlich deformieren, damit sie mehr einer erde ähnlich ist. daher brauch ich die punkte.

Code:
  1. for i:=0 to n do
  2.     begin
  3.       theta3 := i * TWOPI / n;
  4.  
  5.       e[0] := cos(theta2) * cos(theta3);
  6.       e[1] := sin(theta2);
  7.       e[2] := cos(theta2) * sin(theta3);
  8.       p[0] := c[0] + r * e[0];
  9.       p[1] := c[1] + r * e[1];
  10.       p[2] := c[2] + r * e[2];
  11.  
  12.       glNormal3f(e[0],e[1],e[2]);
  13.       glTexCoord2f(i/n,2*(j+1)/n);
  14.       glVertex3f(p[0],p[1],p[2]);  -> ist ein punkt.
  15.  
  16.       e[0] := cos(theta1) * cos(theta3);
  17.       e[1] := sin(theta1);
  18.       e[2] := cos(theta1) * sin(theta3);
  19.       p[0] := c[0] + r * e[0];
  20.       p[1] := c[1] + r * e[1];
  21.       p[2] := c[2] + r * e[2];
  22.  
  23.       glNormal3f(e[0],e[1],e[2]);
  24.       glTexCoord2f(i/n,2*j/n);
  25.       glVertex3f(p[0],p[1],p[2]); ist auch ein punkt.
  26.     end;


Also, so weit bin ich schon, aber die Punkte werden durch das (GL_QUAD_STRIP) total falsch gezeichnet... obwohl, aso, die for schleifen passen dann nicht mehr, weil die bei gl_triangle anders gezeichnet werden müssen... aber die punkte, die ins array müssn, sin schon das? damit ich mal das array hab. das zeichnen is dann was anderes.
dann kann ich eigentlich keine displaylist mehr machn, weil sich die werte ja ändern... ich schau mir displaylisten gleich an, aber die kugel soll dynamisch, also zur laufzeit verformbar sein... das passiert so alle 20 sekunden. jedesmall ne neue displayliste anlegen scheint wahrscheinlich schneller.

_________________
"As the enemy went to heaven,
we stayed in hell!"


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 12, 2007 09:44 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
wenn die kugel nur plattdrücken (Erde) willst könntest du das ja auch über glscale() lösen.

_________________
ghost-site.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 18, 2007 18:30 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
wenn du die werte zur Laufzeit noch verändern willst, würden sich nicht so sehr displaylisten, als vielmehr VBOs anbieten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 25, 2007 08:18 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich würde ein VBO mit ein Vertexshader anbieten.
Dann kannst deine Kugel speichern und mit dem Vertexshader deformieren.
Du kannst natürlich auch wie Grizzly vorgeschlagen hat beim start des Programmes, einfach mal die Daten in das VBO packen.

_________________
"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  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

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