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

Aktuelle Zeit: Do Jul 10, 2025 12:50

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 3D Würfel mal ganz anders ;-(
BeitragVerfasst: So Jul 16, 2006 00:56 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
moin Leute,

vorab meine procedure Render.
ist eigentlich nur das was man im Tut lesen kann bis Lektion2,
plus meine "Geistesblitze" später einen 3D Würfel darstellen zu wollen.
Code:
  1. procedure TForm1.Render;
  2. begin
  3.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  4.  
  5.   glMatrixMode(GL_PROJECTION);
  6.   glLoadIdentity;
  7.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  8.  
  9.  
  10.   glMatrixMode(GL_MODELVIEW);
  11.   glLoadIdentity;
  12.  
  13.   glTranslatef(0, 0, -5);  //-5 = 5 Einheiten nach hinten
  14.  
  15.   glBegin(GL_QUADS);                                 //vordere Seite d.quads  (Color Rot)
  16.     glColor3f(1, 0, 0); glVertex3f(0, 0, 0);
  17.                         glVertex3f(1, 0, 0);
  18.                         glVertex3f(1, 1, 0);
  19.                         glVertex3f(0, 1, 0);
  20.  
  21.     glColor3f(0, 1, 0); glVertex3f(0,1,0);          //oben C=gruen
  22.                         glVertex3f(1,1,0);
  23.                         glVertex3f(1,1,1);
  24.                         glVertex3f(0,1,1);
  25.  
  26.     glColor3f(0, 0, 1); glVertex3f(1,0,0);            //rechts c=blau
  27.                         glVertex3f(1,0,1);
  28.                         glVertex3f(1,1,1);
  29.                         glVertex3f(1,1,0);
  30.     // eigentlich fehlen noch 3 Seiten .... ;-((
  31.    {...}
  32.   glEnd;
  33.  
  34.   SwapBuffers(DC);
  35. end;
  36.  


nicht das das Ergebnis umwerfend ist, aber ich hab die Koordinaten
extra zuvor auf Papier (inkl. würfel) gemalt. Was kommt ist ein großes "Denkste".

Was ist denn nun verkehrt an den Koordinaten ?


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 16, 2006 02:51 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Die Antwort ist gemein aber:
Der Code stimmt, das Ergebnis auch! :twisted:

Ich hab dein Bild nochmal überarbeitet. Der Punkt in der Mitte ist der Ursprung.
Jetzt ist es perspektivische Verzehrung von diesem Punkt aus.
Die beiden Linien zeigen die Verzehrung die Punkte auf dieser Linie erfolgen.
Daher siehst du auch, dass die "komischen" Punkte doch richtig sind :D

Also verschiebst du entweder die Szene um 0,5 in X-Richtung oder du änderst die Punkte in sowas um:
Code:
  1.   glBegin(GL_QUADS);                                 //vordere Seite d.quads  (Color Rot)
  2.     glColor3f(1, 0, 0); glVertex3f(-1, -1, 0);
  3.                         glVertex3f(1, -1, 0);
  4.                         glVertex3f(1, 1, 0);
  5.                         glVertex3f(-1, 1, 0);
  6.  
  7.     glColor3f(0, 1, 0); glVertex3f(-1,1,0);          //oben C=gruen
  8.                         glVertex3f(1,1,0);
  9.                         glVertex3f(1,1,1);
  10.                         glVertex3f(-1,1,1);
  11.  
  12.     glColor3f(0, 0, 1); glVertex3f(1,-1,0);            //rechts c=blau
  13.                         glVertex3f(1,-1,1);
  14.                         glVertex3f(1,1,1);
  15.                         glVertex3f(1,1,0);
  16.     // eigentlich fehlen noch 3 Seiten .... ;-((
  17.    {...}
  18.   glEnd;

Dann sieht es aus wie auf dem 2. Bild.

Übrigens solltest du PNG anstatt JPG verwenden. Man erkennt an deinem Bild Artefakte, die unnötig sind :(


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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jul 16, 2006 10:32 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi i0n0s,

Danke dir erstmal für deine Hilfe, das ich nun doch noch was auf meinem Screen zu sehen bekam. :D

Das mit den Koordinaten ändern war beim ersten mal noch etwas
geistig anstrengende Arbeit. Wie soll dass bloß bei komplexeren Sachen erst werden?
Nicht daß das Ergebnis nicht genau das ist was ich wollte. Aber da bin ich selbst
dran schuld, denn ich hab's ja auch genauso beschrieben.
(Deswegen probier ich auch erstmal einiges nur so rum :wink: )
Solche Objecte kann man doch bestimmt besser / eleganter Erzeugen, als wirklich
jeden einzelnen Vect.. *mom vergessen den Namen* Punkt als eine seperate CodeZeile zu schreiben müssen.

> Also verschiebst du entweder die Szene um 0,5 in X-Richtung oder ...
Da muss ich mal in die Tuts schauen was du damit meinst, oder zumindest wie ich das anstellen kann( befehl raussuchen)

Das mit den Bildern als PNG hochladen werd ich übernehmen, bisher reichte ein
jpg aus, aber ich vergaß auf diesen Seiten handelt es sich um graphische Darstellungen von
allem möglichen, da sollte dann auch etwas besseres kommen als komprimierte jpg's.
hab es dann im angehängten Bild auch gleich umgesetzt :D

Wie man auch daraus erkennen kann, hab ich den "Würfel", oder was das nun geworden ist,
mit glRotatef(1,0,0); auch zum Drehen bekommen. Viel wichtiger ist mir aber die FPS-Anzeige
im Caption. hab hier XP zu laufen , mit einer Winfast A310 von Leadteck. Nicht grad der Hammer trotz seiner 256 MB RAM.
Sowie ich den Treiber der Orginal-CD benutze, (installiert es mir dann die Karte als Nvidia Geforce FX 5600). Mit diesem Treiber
bekomme ich gerad mal bei 60-63 FPS hin. Benutze ich den XP Treiber von M$, dann gibt's das 10-fache.

:?: Kann ich nun die Karte bei meiner Tochter in den PC einbasteln und mir ne neue kaufen, oder gibt's da irgendwelche Abhilfe ?
Bei Nvidia auf der DL-Seite für Treiber find ich leider keinen Treiber für die A310. :twisted:
(Die ATI auf meinem Laptop bringt sogar 2800-3100 Fps zum Vergleich)

hier dann noch das bild vom Programm (aus der Umdrehung heraus "geknipst")

Gruß Uwe


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


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Jul 16, 2006 15:09 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
uweq hat geschrieben:
> Also verschiebst du entweder die Szene um 0,5 in X-Richtung oder ...
Da muss ich mal in die Tuts schauen was du damit meinst, oder zumindest wie ich das anstellen kann( befehl raussuchen)

glTranslatef(0.5,0,0); ;)

uweq hat geschrieben:
:?: Kann ich nun die Karte bei meiner Tochter in den PC einbasteln und mir ne neue kaufen, oder gibt's da irgendwelche Abhilfe ?
Bei Nvidia auf der DL-Seite für Treiber find ich leider keinen Treiber für die A310. :twisted:

Die A310 ist eine Geforce. Daher kannst du den Geforce-Treiber von der Nvidia-Seite nehmen.
Also den hier:
http://www.nvidia.de/object/winxp_2k_91.31_de.html


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 16, 2006 18:03 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi i0n0s,
Der Treiber von Nvidia bringt auch nur eine 60fps-Rate.
Vielleicht puffert aber die Karte es auf ein maximales Minimum, um alles Ruckelfrei anzeigen zu können.
Keine Ahnung, aber danke für den Link.

Die Function glTranslate werd ich mir dann mal näher anschauen(und was dazu gehört)

Bisher hab ich irgendwas aber noch nicht richtig begriffen :twisted:
um einen einfachen simplen würfel darstellen zu können.
..aber man arbeitet dran :D

gruß Uwe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 16, 2006 18:10 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
uweq hat geschrieben:
Der Treiber von Nvidia bringt auch nur eine 60fps-Rate.

Hast du zufällig einen TFT und daher die Refreshrate auf 60fps gesetzt? Weil dann hast du einfach VSync an, dass lässt sich dann im Treiber deaktivieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: dank dir
BeitragVerfasst: So Jul 16, 2006 21:44 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi i0n0s,

Das mit dem Treiber hat bei Deaktivierung dann 2800 fps gebracht.:D
Mit dem TFT hattest du richtig vermutet, nur mein Schlepptop hat auch TFT,
aber eben ne ATI drin, und deshalb die verwirrung bei mir.

schöne Grüße aus Berlin
Uwe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 17, 2006 07:24 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
ach ja noch eine Anmerkung zur perspektive: lustigerweise schaut man bei diesen bildern in den würfel hinein, statt aussen drauf - das sorgt gelegentlich auch für Verwirrung ;-) Aber noch ein kleiner Tipp, wenn Du mal wieder nicht ganz sicher bist, ob das, was Du siehst richtig ist: Drehungen helfen deinem Gehirn zu verstehen, wie eine Szene wirklich aussieht - sprich: Ein fest stehender Würfel lässt sich viel schlechter interpretieren, als ein sich drehender ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 17, 2006 19:45 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi Nico,

Das mit dem Würfel hast du richtig erkannt. War aber nicht so geplant, aber ich werd mir mal mühe geben das hinzubekommen.
Das mit dem Rotieren bzw. drehen um eine andere Ansicht zu bekommen, hab ich mal mit glRotatef gemacht.
Kam halt nur beimScreenshot nicht rüber, ist halt eben ein Standbild.

Lustig kommt mein Gebilde aber trotzdem :P

Naja, ich geb erstmal nicht auf und 90%lesen :shock: 9%falsch testen :D 1%fragen :cry:
dann klappt's auch irgendwann.

Gruß Uwe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 17, 2006 22:42 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
uweq hat geschrieben:
1%fragen :cry:

Lieber mehr fragen anstatt aufgeben und es in die Ecke schmeissen. Für irgendeinen Zweck hat Phobeus ja das Forum erstellt :lol:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 18, 2006 07:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi i0n0s,

ich mach's auch öfter, nur ich wills aber auch richtig verstanden wissen.
Also nicht etwa sowas wie
Was ist ein Quad etc..
oder wie initialisiere ich OpenGL .. :D

gruß Uwe

PS . und aufgeben kommt sowieso nicht in Frage,
hab schliesslich ein offenes Projekt hier zu liegen.
Dafür ist reines Delphi mit Grafikausgabe doch reichlichst "behindert" (Canvas)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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 | 16 Queries | GZIP : On ]