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

Aktuelle Zeit: Do Jul 17, 2025 15:47

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mi Feb 08, 2006 16:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jan 24, 2006 16:26
Beiträge: 25
Hi,

es wird garantiert ne total blöde Frage sein. Ich habe ein Würfel gebaut aber die Seiten kann ich, wenn ich um den Würfel drehe, nur von einer Seite sehen!? Also ich kann teilweise durchgucken..

Code:
  1.  
  2. begin
  3.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Farbpuffer un Tiefenpuffer entleeren
  4.  
  5.   glMatrixMode(GL_Projection);    
  6.   glLoadIdentity;  
  7.   gluPerspective(50, ClientWidth/ClientHeight, NearClipping, FarClipping);
  8.  
  9.   //glScalef(1,1,1);
  10.   glTranslatef(0,0,-10);
  11.  
  12.   glMatrixMode(GL_MODELVIEW);
  13.  
  14.   glrotatef(0.3,0,0.3,0);
  15.   glBegin(GL_Quads);
  16.     glcolor3f(1,1,1); glVertex3f(-2,-1, 0);    //Frontalebene
  17.     glcolor3f(1,1,1); glVertex3f( 2,-1, 0);
  18.     glcolor3f(1,1,1); glVertex3f( 2, 3, 0);
  19.     glcolor3f(1,1,1); glvertex3f(-2, 3, 0);
  20.  
  21.     glcolor3f(1,1,0); glVertex3f( 2,-1,-4);    //Hintereebene
  22.     glcolor3f(1,1,0); glVertex3f( 6,-1,-4);
  23.     glcolor3f(1,1,0); glVertex3f( 6, 3,-4);
  24.     glcolor3f(1,1,0); glvertex3f( 2, 3,-4);
  25.  
  26.     glcolor3f(0,1,1); glVertex3f( 2, 3, 0);    //rechte Ebene
  27.     glcolor3f(0,1,1); glVertex3f( 6, 3,-4);
  28.     glcolor3f(0,1,1); glVertex3f( 6,-1,-4);
  29.     glcolor3f(0,1,1); glvertex3f( 2,-1, 0);
  30.  
  31.     glcolor3f(0,1,0); glVertex3f(-2, 3, 0);    //linke Ebene
  32.     glcolor3f(0,1,0); glVertex3f( 2, 3,-4);
  33.     glcolor3f(0,1,0); glVertex3f( 2,-1,-4);
  34.     glcolor3f(0,1,0); glvertex3f(-2,-1, 0);
  35.  
  36.     glcolor3f(1,1,1); glVertex3f(-2, 3, 0);    //Deckebene
  37.     glcolor3f(0,1,1); glVertex3f( 2, 3,-4);
  38.     glcolor3f(0,1,1); glVertex3f( 6, 3,-4);
  39.     glcolor3f(0,0,1); glvertex3f( 2, 3, 0);
  40.  
  41.     glcolor3f(0,1,0); glVertex3f(-2,-1, 0);    //Bodenebene
  42.     glcolor3f(1,0,1); glVertex3f( 2,-1,-4);
  43.     glcolor3f(0,1,0); glVertex3f( 6,-1,-4);
  44.     glcolor3f(1,0,1); glvertex3f( 2,-1, 0);
  45.   glEnd;
  46.  
  47.   Swapbuffers(DC);
  48.  
  49. end;
  50.  


Thx im Voraus für die Hilfe!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 08, 2006 17:27 
Offline
DGL Member

Registriert: Mo Dez 26, 2005 22:27
Beiträge: 117
Programmiersprache: Pascal, C++
Das Problem hatte ich auch mal.. Liegt glaub ich daran, das du die Seiten geweils nur auf einer Seite texturirest/einfärbst und bei manchen Ansichten schaust du auf die nicht eingefärbte Seite, bzw schaust dadurch hindurch.

Überleg dir einfach wo (von welcher Ansicht) man die Seiten sieht. Dann drehst du das Vierech mit glrotate rum und färbst es ein.. So habe ich das Problem gelösst. Vielleicht gibt es auch eine effektivere Lösung

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 08, 2006 17:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 17, 2002 12:07
Beiträge: 976
Wohnort: Tübingen
Ich schätze, dass liegt eher am altbekannten Face-Culling. Deaktiver das mal einfach per glDisable(GL_CULL_FACE);
Mehr Infos hier: Backface_Culling (Wow, der Wiki-Tag is echt ne tolle Sache!)

_________________
"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: Mi Feb 08, 2006 18:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jan 24, 2006 16:26
Beiträge: 25
hi,

danke nochmal, es klappt jetzt. Ich musste die Koordinaten der flächen noch umändern, dass sie von beiden seiten textuiert werden.

eine Frage noch: gibt es einen einfachen Algorithmus womit man würfel oder ähnliches zeichnen kann? denn es dauert ja schon lange sich da reinzudenken und die Koordinaten richtig zu wählen...außerdem das mit dem Face-Culling war es nicht thx trotzdem

mfg juKx


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 08, 2006 23:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 02, 2006 22:37
Beiträge: 39
Wohnort: Köln
Nun, du wirst wohl nicht um einen Loader für Models herumkommen. Diese laden die Vertices, die du momentan per Hand setzt aus einer Datei und du zeichnetst diese dann. Zusätzlich beinhalten sie auch die Normals, etc, etc. Welche fertigen loader es für Delphi gibt, kann dir sicher einer der Delpher hier beantworten.

-Malax


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 09, 2006 07:19 
Offline
DGL Member
Benutzeravatar

Registriert: So Feb 06, 2005 17:29
Beiträge: 187
Programmiersprache: C, C++
Zitat:
Ich musste die Koordinaten der flächen noch umändern, dass sie von beiden seiten textuiert werden.
Da muss ich nochmal kurz nachhaken, wie meinst du das? Texturen kann man doch immer von beiden Seiten sehen, oder? Ausser natürlich wenn BackfaceCulling an ist ...

_________________
Flummi: Projektseite und Projektthread


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 09, 2006 12:53 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
So wie ich das sehe liegt es sehr wohl am Backfaceculling. Die Vertexe müssen entgegen dem Urzeigersinn übergeben werden. Die Rückseite deines Würfels muss entsprechend im Urzeigersinn übergeben werden, damit man sie von hinten sieht. Hat was mit glFrontFace zu tun.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 09, 2006 14:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jan 24, 2006 16:26
Beiträge: 25
hi,

Zitat:
Da muss ich nochmal kurz nachhaken, wie meinst du das? Texturen kann man doch immer von beiden Seiten sehen, oder? Ausser natürlich wenn BackfaceCulling an ist ...


also, ich habe 2 Wege gefunden das Problem zu lösen:

1. Wie oben schon genannt geht das mit glDisable(GL_CULL_FACE);

2. Ich habe die punkte es quaders so gewählt, dass man ihn voll sieht aber wenn man im Würfel wär, dann würde mal überall langgucken können.Also durch die inneren Flächen kann man sehen aber man sieht ja den Würfel von außen, daher brauche ich das nicht. Bei dieser Methode kann glEnable(GL_CULL_FACE) lassen; Verstanden?

zu 2.:
Code:
  1.  
  2. glBegin(GL_Quads);
  3.     glcolor3f(1,1,1); glVertex3f(-2,-1, 0);    //Frontalebene, weiss
  4.     glcolor3f(1,1,1); glVertex3f( 2,-1, 0);
  5.     glcolor3f(1,1,1); glVertex3f( 2, 3, 0);
  6.     glcolor3f(1,1,1); glvertex3f(-2, 3, 0);
  7.  
  8.     glcolor3f(1,1,0); glVertex3f( 2, 3,-4);    //Hinterebene, gelb
  9.     glcolor3f(1,1,0); glVertex3f( 6, 3,-4);
  10.     glcolor3f(1,1,0); glVertex3f( 6,-1,-4);
  11.     glcolor3f(1,1,0); glvertex3f( 2,-1,-4);
  12.  
  13.     glcolor3f(0,1,1); glVertex3f( 2,-1, 0);    //rechte Ebene, hellblau
  14.     glcolor3f(0,1,1); glVertex3f( 6,-1,-4);
  15.     glcolor3f(0,1,1); glVertex3f( 6, 3,-4);
  16.     glcolor3f(0,1,1); glvertex3f( 2, 3, 0);
  17.  
  18.     glcolor3f(0,1,0); glVertex3f(-2, 3, 0);    //linke Ebene, grün
  19.     glcolor3f(0,1,0); glVertex3f( 2, 3,-4);
  20.     glcolor3f(0,1,0); glVertex3f( 2,-1,-4);
  21.     glcolor3f(0,1,0); glvertex3f(-2,-1, 0);
  22.  
  23.     glcolor3f(1,1,1); glVertex3f(-2, 3, 0);    //Deckebene, Skihimmel(Blauübergang)
  24.     glcolor3f(0,1,1); glVertex3f( 2, 3, 0);
  25.     glcolor3f(0,1,1); glVertex3f( 6, 3,-4);
  26.     glcolor3f(0,0,1); glvertex3f( 2, 3,-4);
  27.  
  28.     glcolor3f(0,1,0); glVertex3f(-2,-1, 0);    //Bodenebene, lila-grün
  29.     glcolor3f(1,0,1); glVertex3f( 2,-1,-4);
  30.     glcolor3f(0,1,0); glVertex3f( 6,-1,-4);
  31.     glcolor3f(1,0,1); glvertex3f( 2,-1, 0);
  32.  
  33.   glEnd;
  34.  


mfg juKx


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 09, 2006 15:40 
Offline
DGL Member
Benutzeravatar

Registriert: So Feb 06, 2005 17:29
Beiträge: 187
Programmiersprache: C, C++
Aha, hier liegt ein Missverständnis vor 8)!

Es liegt nämlich so wie ich das sehe sehr wohl am GL_CULL_FACE, also versuch ich das mal zu erklären.

Code:
  1. glEnable(GL_CULL_FACE);
Hiermit aktivierst du Backfaceculling, also werden die Rückseiten nicht gezeichnet, also ist es schneller, also sollte man es wenn möglich auch verwenden \":wink:\" .
Je nachdem ob du die Punkte einer Fläche mit oder gegen den Uhrzeigersinn angegeben hast, weiss OpenGL, ob es sich um die Vorder- oder Rückseite handelt.

Ich hoffe ich konnte das verständlich machen?

Sonst probier doch mal mit
Code:
  1. glDisable(GL_CULL_FACE);
und der Kamera im Würfel zu rendern. Nun solltest du auch die Innenseiten sehen, oder?

edit// http://www.delphigl.com/forum/viewtopic.php?t=5182 Hier erklären die Fachleute nochmal :D

_________________
Flummi: Projektseite und Projektthread


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


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]