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

Aktuelle Zeit: Fr Jul 18, 2025 05:26

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



Ein neues Thema erstellen Auf das Thema antworten  [ 51 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 02, 2005 09:13 
Offline
DGL Member

Registriert: Fr Mär 04, 2005 08:01
Beiträge: 25
Der Tiefentest ist bei mir deaktiviert, klappt auch bei den Geraden, sofern eine Ebene drin ist aber mit mehreren Ebenen klappt es irgendwie nicht. Liegt das am Alphakanal, dem ich der Ebene zuweise oder woran könnte es noch liegen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 02, 2005 10:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich habe immer noch das selbe Problem. Ich kann mir leider kein genaues Bild davon machen wie es sich verhält. Kannst du das Programm mal hochladen oder ist es streng geheim? Nach Möglichkeit auch mit Sourcen damit wir uns das mal ganz genau anschauen können.

Wenn du es nicht hochladen kannst, oder es nicht der breiten Masse offen legen möchtest dann schicke es mir per Mail.
info AT dev-center.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 02, 2005 10:47 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also ich stell mir das einfach momentan so vor: 2 transparente Platten die sich schneiden sollen dargestellt werden. (Oder lieg ich der ganzen Zeit schon daneben :?: )[/pascal]

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 02, 2005 10:50 
Offline
DGL Member

Registriert: Fr Mär 04, 2005 08:01
Beiträge: 25
Flash: genau, nur dass es eben nicht immer 2 sind, sondern halt beliebig viele.
Ich poste gleich mal nen bisschen Code.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 02, 2005 10:58 
Offline
DGL Member

Registriert: Fr Mär 04, 2005 08:01
Beiträge: 25
folgende Proc wird bei FormShow aufgerufen:
Code:
  1.  
  2. procedure TGrafikForm.GenerateObjects;
  3. var Lauf    : Integer;
  4. begin
  5.   if High(Punkte)<>-1 then
  6.   begin
  7.     glDeleteLists(PListe, 1);
  8.     PListe:=glGenLists(1);
  9.     glNewList(PListe,gl_compile);
  10.     glPointsize(10);
  11.     glColor4f(0,1,1,1);
  12.     glBegin(gl_points);
  13.     for Lauf := 0 to High(Punkte) do
  14.     begin
  15.         glVertex3f(Punkte[Lauf].x1, Punkte[Lauf].x2, Punkte[Lauf].x3);
  16.     end;
  17.     glEnd;
  18.     glEndList;
  19.   end;
  20.  
  21.   if High(Geraden)<>-1 then
  22.   begin
  23.     glDeleteLists(GListe, 1);
  24.     GListe:=glGenLists(1);
  25.     glNewList(GListe, gl_compile);
  26.     glLineWidth(3);
  27.     glColor4f(1, 1, 0, 1);
  28.  
  29.     for Lauf := 0 to High(Geraden) do
  30.     begin
  31.       glBegin(gl_lines);
  32.         glVertex3f(Geraden[Lauf].Ortsvektor.x1+100*Geraden[Lauf].Richtung1.x1,
  33.                    Geraden[Lauf].Ortsvektor.x2+100*Geraden[Lauf].Richtung1.x2,
  34.                    Geraden[Lauf].Ortsvektor.x3+100*Geraden[Lauf].Richtung1.x3);
  35.         glVertex3f(Geraden[Lauf].Ortsvektor.x1-100*Geraden[Lauf].Richtung1.x1,
  36.                    Geraden[Lauf].Ortsvektor.x2-100*Geraden[Lauf].Richtung1.x2,
  37.                    Geraden[Lauf].Ortsvektor.x3-100*Geraden[Lauf].Richtung1.x3);
  38.       glEnd;
  39.     end;
  40.     glEndList;
  41.   end;
  42.  
  43.   if High(Ebenen)<>-1 then
  44.   begin
  45.      glDeleteLists(EListe, 1);
  46.      EListe:=glGenLists(1);
  47.      glNewList(EListe, gl_compile);
  48.      glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
  49.      glDisable(GL_DEPTH_TEST);
  50.      glenable(gl_blend);
  51.      glblendfunc(gl_src_alpha, gl_src_alpha);
  52.      for Lauf := 0 to High(Ebenen) do
  53.      begin
  54.        if IsNullVektor(Ebenen[Lauf].Richtung1) then
  55.        begin
  56.           //hier fehlt noch was
  57.  
  58.        end else
  59.        begin
  60.          case Lauf of
  61.          0:glcolor4f(0.3,0.3,0.8, TAlpha);
  62.          1:glcolor4f(0.8,0.3,0.8, TAlpha);
  63.          2:glcolor4f(0.3,0.8,0.8, TAlpha);
  64.          end;
  65.          glBegin(gl_quads);
  66.             glVertex3f(Ebenen[Lauf].Ortsvektor.x1
  67.                 +100*Ebenen[Lauf].Richtung1.x1+100*Ebenen[Lauf].Richtung2.x1,
  68.                 Ebenen[Lauf].Ortsvektor.x2+100*Ebenen[Lauf].Richtung1.x2
  69.                 +100*Ebenen[Lauf].Richtung2.x2,Ebenen[Lauf].Ortsvektor.x3
  70.                 +100*Ebenen[Lauf].Richtung1.x3+100*Ebenen[Lauf].Richtung2.x3);
  71.             glVertex3f(Ebenen[Lauf].Ortsvektor.x1
  72.                 -100*Ebenen[Lauf].Richtung1.x1+100*Ebenen[Lauf].Richtung2.x1,
  73.                 Ebenen[Lauf].Ortsvektor.x2-100*Ebenen[Lauf].Richtung1.x2
  74.                 +100*Ebenen[Lauf].Richtung2.x2,Ebenen[Lauf].Ortsvektor.x3
  75.                 -100*Ebenen[Lauf].Richtung1.x3+100*Ebenen[Lauf].Richtung2.x3);
  76.             glVertex3f(Ebenen[Lauf].Ortsvektor.x1
  77.                 -100*Ebenen[Lauf].Richtung1.x1-100*Ebenen[Lauf].Richtung2.x1,
  78.                 Ebenen[Lauf].Ortsvektor.x2-100*Ebenen[Lauf].Richtung1.x2
  79.                 -100*Ebenen[Lauf].Richtung2.x2,Ebenen[Lauf].Ortsvektor.x3
  80.                 -100*Ebenen[Lauf].Richtung1.x3-100*Ebenen[Lauf].Richtung2.x3);
  81.             glVertex3f(Ebenen[Lauf].Ortsvektor.x1
  82.                 +100*Ebenen[Lauf].Richtung1.x1-100*Ebenen[Lauf].Richtung2.x1,
  83.                 Ebenen[Lauf].Ortsvektor.x2+100*Ebenen[Lauf].Richtung1.x2
  84.                 -100*Ebenen[Lauf].Richtung2.x2,Ebenen[Lauf].Ortsvektor.x3
  85.                 +100*Ebenen[Lauf].Richtung1.x3-100*Ebenen[Lauf].Richtung2.x3);
  86.          glEnd;
  87.      end;
  88.      glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
  89.      glEnable(GL_DEPTH_TEST);
  90.      glEndList;
  91.      end;
  92.   end;
  93.  
  94.   glDeleteLists(Komplett, 1);
  95.   Komplett:=glGenLists(1);
  96.     glNewList(Komplett, gl_compile);
  97.       glCallList(Achsen);
  98.       glCallList(Cube);
  99.       glCallList(PListe);
  100.       glCallList(GListe);
  101.       glCallList(EListe);
  102.     glEndList;
  103. end;
  104.  


Die anderen Listen, die nicht auf Formshow angelegt werden, sind irrelevant, werden nicht verändert und werden OnCreate erstellt. In der Rendering-Prozedur wird dann die komplette Liste aufgerufen.
Wichtig wäre noch:
Code:
  1.  
  2. type
  3.   T3dVektor = record
  4.               x1, x2, x3: Real;
  5.               end;
  6.   T3dGerade = record
  7.               Ortsvektor, Richtung1           : T3dVektor;
  8.               end;
  9.   TEbene = record
  10.            Ortsvektor, Normalenvektor, Richtung1, Richtung2: T3dVektor;
  11.            end;
  12. var
  13.   Punkte: T3dPunkte;
  14.   Geraden: T3dGeraden;
  15.   Ebenen: TEbenen;
  16.  


Beim Test sind jeweils 2 Ebenen drin, die nicht identisch sind und aus Richtungsvektoren bestehen, d.h. garantiert 2 Schleifendurchläufe, nur eine Ebene ist drin.

Edit: Kleinigkeit vergessen
Code:
  1.  
  2.   T3dPunkte = Array of T3dVektor;
  3.   T3dGeraden = Array of T3dGerade;
  4.   TEbenen = Array of TEbene;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Apr 02, 2005 11:11 
Offline
DGL Member

Registriert: Fr Mär 04, 2005 08:01
Beiträge: 25
Hmm, sieht schlecht aus oder? :/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 51 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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 ]