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

Aktuelle Zeit: Do Jul 10, 2025 15:58

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Jan 05, 2009 15:10 
Offline
DGL Member

Registriert: Mo Jan 05, 2009 14:45
Beiträge: 4
Hallo zusammen,
der folgende Quellcode soll ein Planetarium simulieren mit Delphi 6; dazu wollte ich auch eine skybox einführen, wie im Skybox Tutorial beschrieben. Leider werden trotz deaktiveiren backface Culling nur 3 von 6 Texturen gezeichnet. Dies scheint zusätzlich dazu zu führen, dass alle Objekte schwarz dargestellt werden. Ich kann den Fehler leider nicht ausmachen.
Darüber hinaus wollte ich fragen, ob ihr weitere Fehler oder Unschönheiten entdecken könnt, bei denen es bessere Möglichkeiten der Umsetzung gäbe.


Code:
  1.  
  2. public    { Public-Deklarationen }
  3.     DC                                : HDC;    //Handle auf Zeichenfläche
  4.     RC                                : HGLRC;  //Rendering Context
  5.     List  : Cardinal;
  6.     yrot  : TGLFloat;
  7.     xrot  : TGLFloat;
  8.     OMpos : TPoint;
  9.  
  10.   end;
  11.  
  12. var
  13.   Form1: TForm1;
  14.   drehen: GLfloat = 0;
  15.  SphereQuadratic : PGLUquadric;
  16.    SkyBoxTexture : Array[0..5] of TGLBmp;
  17.  
  18. [...]
  19.  
  20. procedure TForm1.LoadSkyBox;
  21. const
  22.  // bildernamen
  23.  SkyBoxName : array[0..5] of String = ('BK', 'FR', 'DN', 'UP', 'LF', 'RT');
  24. var
  25.  i : Integer;
  26. begin
  27. // bilder einladen
  28. for i := 0 to High(SkyBoxTexture) do
  29.  begin
  30.  SkyBoxTexture[i] := TGLBmp.Create;
  31.  SkyBoxTexture[i].LoadImage(SkyBoxName[i]+'.jpg');
  32.  SkyBoxTexture[i].SetTextureWrap(GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE);
  33.  SkyBoxTexture[i].GenTexture(False, False);
  34.  end;
  35. GenerateSkyBox(512, 512, 512);
  36. end;
  37.  
  38. procedure TForm1.GenerateSkyBox(pWidth, pHeight, pLength : TGLFloat);
  39. var
  40.  px,py,pz : TGLFloat;
  41. begin
  42. List := glGenLists(1);
  43. glNewList(List, GL_COMPILE);
  44.  px := - pWidth  / 2;
  45.  py := - pHeight / 2;
  46.  pz := - pLength / 2;
  47.  SkyBoxTexture[0].Bind;
  48.  glBegin(GL_QUADS);
  49.   glTexCoord2f(0, 0); glVertex3f(px,          py,           pz);
  50.   glTexCoord2f(0, 1); glVertex3f(px,          py + pHeight, pz);
  51.   glTexCoord2f(1, 1); glVertex3f(px + pWidth, py + pHeight, pz);
  52.   glTexCoord2f(1, 0); glVertex3f(px + pWidth, py,           pz);
  53.  glEnd;
  54.  SkyBoxTexture[1].Bind;
  55.  glBegin(GL_QUADS);
  56.   glTexCoord2f(1, 0); glVertex3f(px,          py,           pz + pLength);
  57.   glTexCoord2f(1, 1); glVertex3f(px,          py + pHeight, pz + pLength);
  58.   glTexCoord2f(0, 1); glVertex3f(px + pWidth, py + pHeight, pz + pLength);
  59.   glTexCoord2f(0, 0); glVertex3f(px + pWidth, py,           pz + pLength);
  60.  glEnd;
  61.  SkyBoxTexture[2].Bind;
  62.  glBegin(GL_QUADS);
  63.   glTexCoord2f(1, 1); glVertex3f(px + pWidth, py, pz);
  64.   glTexCoord2f(1, 0); glVertex3f(px + pWidth, py, pz + pLength);
  65.   glTexCoord2f(0, 0); glVertex3f(px,          py, pz + pLength);
  66.   glTexCoord2f(0, 1); glVertex3f(px,          py, pz);
  67.  glEnd;
  68.  SkyBoxTexture[3].Bind;
  69.  glBegin(GL_QUADS);
  70.   glTexCoord2f(0, 0); glVertex3f(px,          py + pHeight, pz);
  71.   glTexCoord2f(0, 1); glVertex3f(px,          py + pHeight, pz + pLength);
  72.   glTexCoord2f(1, 1); glVertex3f(px + pWidth, py + pHeight, pz + pLength);
  73.   glTexCoord2f(1, 0); glVertex3f(px + pWidth, py + pHeight, pz);
  74.  glEnd;
  75.  SkyBoxTexture[4].Bind;
  76.  glBegin(GL_QUADS);
  77.   glTexCoord2f(1, 0); glVertex3f(px, py,           pz);
  78.   glTexCoord2f(0, 0); glVertex3f(px, py,           pz + pLength);
  79.   glTexCoord2f(0, 1); glVertex3f(px, py + pHeight, pz + pLength);
  80.   glTexCoord2f(1, 1); glVertex3f(px, py + pHeight, pz);
  81.  glEnd;
  82.  SkyBoxTexture[5].Bind;
  83.  glBegin(GL_QUADS);
  84.   glTexCoord2f(0, 0); glVertex3f(px + pWidth, py,           pz);
  85.   glTexCoord2f(1, 0); glVertex3f(px + pWidth, py,           pz + pLength);
  86.   glTexCoord2f(1, 1); glVertex3f(px + pWidth, py + pHeight, pz + pLength);
  87.   glTexCoord2f(0, 1); glVertex3f(px + pWidth, py + pHeight, pz);
  88.  glEnd;
  89. glEndList;
  90. end;
  91.  
  92.  
  93. procedure TForm1.FormCreate(Sender: TObject);
  94. begin
  95.   DC:= GetDC(Handle);
  96.   if not InitOpenGL then Application.Terminate;
  97.   RC:= CreateRenderingContext( DC,
  98.                                [opDoubleBuffered],
  99.                                32,
  100.                                24,
  101.                                0,0,0,
  102.                                0);
  103.                                OMPos := Mouse.CursorPos;
  104.   ActivateRenderingContext(DC, RC);
  105.        Application.OnIdle := IdleHandler;
  106. LoadSkyBox;
  107.  
  108. Cursor := crNone;
  109.       SetupGL;
  110.  
  111. end;
  112.  
  113.  
  114.  
  115. procedure TForm1.SetupGL;
  116. begin
  117.  
  118.    glEnable(GL_DEPTH_TEST);          //Tiefentest aktivieren
  119.     //glEnable(GL_CULL_FACE);           //Backface Culling aktivieren
  120.   SphereQuadratic := gluNewQuadric();
  121.   gluQuadricNormals(SphereQuadratic, GLU_SMOOTH);
  122.   glEnable(GL_TEXTURE_2D);
  123.  
  124. end;
  125.  
  126.  
  127. procedure TForm1.FormResize(Sender: TObject);
  128. var tmpBool : Boolean;
  129. begin
  130.   glViewport(0, 0, ClientWidth, ClientHeight);
  131.   glMatrixMode(GL_PROJECTION);
  132.   glLoadIdentity;
  133.   gluPerspective(45.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  134.   glMatrixMode(GL_MODELVIEW);
  135.   glLoadIdentity;
  136.   IdleHandler(Sender, tmpBool);
  137. end;
  138.  
  139. procedure TForm1.FormDestroy(Sender: TObject);
  140. begin
  141.   DeactivateRenderingContext;
  142.   DestroyRenderingContext(RC);
  143.   ReleaseDC(Handle, DC);
  144. end;
  145.  
  146.  
  147. procedure TForm1.Render;
  148. begin
  149.  
  150.  
  151.  
  152. glCallList(List);    
  153.  
  154.  
  155.  
  156.  
  157.    glClear(GL_DEPTH_BUFFER_BIT);
  158.  
  159.  
  160.   glMatrixMode(GL_PROJECTION);
  161.   glLoadIdentity;
  162.               gluPerspective(60.0, ClientWidth/ClientHeight, NearClipping, FarClipping);
  163.  
  164.   glMatrixMode(GL_MODELVIEW);
  165.   glLoadIdentity;
  166.               glClearColor(1.0,1.0, 1.0, 1);
  167.         glTranslatef(0,0,-40);
  168.  
  169.         glRotatef(xrot, 1, 0, 0);
  170.         glRotatef(yrot, 0, 1, 0);
  171.  
  172.  
  173.  
  174.              glPushMatrix();
  175.    //Zentrum Sonne ------------------------------------------
  176.      glRotatef(90,1.0,0.0,0.0); //Sonne aufrichten
  177.      glColor3f (1.0, 1.0, 0.0);     //farbe gelb
  178.      GLuSphere(SphereQuadratic, 2.0, 32, 32);    //nicht maßstabsgerecht!
  179.      //  glRotatef(270,1.0,0.0,0.0); //zurücksetzen
  180.                   //Merkur------------------------------------------------------
  181.                     glPushMatrix();
  182.                     glRotatef(drehen*4, 0.0, 1.0, 0.0);
  183.  
  184.                     glTranslatef(0,0,-4);         //Sichtpunkt
  185.                     glRotatef(drehen, 0.0, 1.0, 0.0);
  186.                     glRotatef(90,1.0,0.0,0.0);  //Eigenrotation richtig initialisieren
  187.                     glColor3f (1.0, 0.2, 0.5);     //farbe rotbraun
  188.                     GLuSphere(SphereQuadratic, 0.15, 12, 12);
  189.                        glPopMatrix();
  190.                    //Venus------------------------------------------------------
  191.                     glPushMatrix();
  192.                     glRotatef(drehen*1.6, 0.0, 1.0, 0.0);
  193.  
  194.                     glTranslatef(0,0,-12*0.7);         //Sichtpunkt
  195.                     glRotatef(drehen, 0.0, 1.0, 0.0);
  196.                     glRotatef(90+177,1.0,0.0,0.0);  //Eigenrotation richtig initialisieren
  197.                     glColor3f (0.7, 0.7, 0.9);     //farbe hellgrau
  198.                     GLuSphere(SphereQuadratic, 0.5, 12, 12);
  199.                        glPopMatrix();
  200.  
  201.                   // Erde-------------------------------------------------------
  202.                     glRotatef(drehen, 0.0, 1.0, 0.0);//Drehung    glRotatef(drehen, 0.0, 1.0, 0.0);
  203.                     glPushMatrix();
  204.                     glTranslatef(0,0,-12);         //Sichtpunkt
  205.                     glRotatef(drehen, 0.0, 1.0, 0.0);; //Eigenrotation  glRotatef(drehen*11, 0.0, 1.0, 0.0);
  206.                     glRotatef(90+23.5,1.0,0.0,0.0);  //Eigenrotation richtig initialisieren
  207.                     glColor3f (0.0, 0.1, 2.4);     //farbe blau
  208.                     GLuSphere(SphereQuadratic, 0.5, 12, 12);
  209.                     glPushMatrix();
  210.                                    //Mond-----------------------------------------------------
  211.                                     glRotatef(90,1.0,0.0,0.0);
  212.                                     glRotatef(drehen*13, 0.0, 1.0, 0.0);//Drehung
  213.                                      glTranslatef(0.7,0,0);         //Sichtpunkt
  214.                                     //glRotatef(drehen, 0.0, 1.0, 0.0); //Eigenrotation
  215.                                     //glRotatef(90,1.0,0.0,0.0);  //Eigenrotation richtig initialisieren
  216.                                      glColor3f (1.0, 1.5, 1.5);     //farbe hellgrau
  217.                                      GLuSphere(SphereQuadratic, 0.1, 12, 12);
  218.  
  219.                                      glPopMatrix();
  220.                          glPopMatrix();
  221.  
  222.                    //MARS------------------------------------------------------
  223.                     glPushMatrix();
  224.                     glRotatef(drehen*0.5, 0.0, 1.0, 0.0);
  225.  
  226.                     glTranslatef(0,0,-12*1.5);         //Sichtpunkt
  227.                     glRotatef(drehen, 0.0, 1.0, 0.0);
  228.                     glRotatef(90+25,1.0,0.0,0.0);  //Eigenrotation richtig initialisieren
  229.                     glColor3f (0.7, 0.0, 0.0);     //farbe rötlich
  230.                     GLuSphere(SphereQuadratic, 0.3, 12, 12);
  231.                        glPopMatrix();
  232.  
  233.                     glColor3f (1.0, 1.0, 1.0);
  234.  
  235.                   glPopMatrix();
  236.  
  237.  
  238.  
  239.    drehen:=drehen+0.4 ;
  240.  
  241.   SwapBuffers(DC);
  242. end;
  243.  
  244.  
  245.  


Die Texturen liegen mit den entsprechenden Namen und der entsprechenden Auflösung im selben Verzeichnis.

Falls dieses Problem schnell gelöst werden sollte, plante ich zusätzlich die Sonne als Lichtquelle einzurichten und Texturen auf die Planeten und rendern.
Doch mit Gentexture zeigt mir jeder Planet trotz Drehung immer die selbe Seite.

Ich danke schonmal im Voraus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 05, 2009 17:16 
Offline
DGL Member

Registriert: Do Dez 18, 2008 21:38
Beiträge: 60
Das Problem habe ich zwar noch nicht gefunden, aber mir sind ein paar Unschönheiten aufgefallen:

1. glGenLists liefert doch TGLUInt zurück und nicht cardinal (hab leider länger nicht in Delphi programmiert und weiß daher nicht mehr, was cardinal für ein Typ ist)
2. Bevor die Planeten gezeichnet werden (TForm1.Render) sollte glDisable(GL_TEXTURE_2D) stehen, da mit glColor sonst die Textur eingefärbt wird und man nicht nur die Farbe, sondern Farbe+Textur sieht. (Und danach natürlich wieder glEnable(GL_TEXTURE_2D) damit Texturen (für die Skybox) wieder aktiviert sind)
3. Ist es nicht sinnvoller statt gluPerspective(60...) in TForm1.Render und gluPerspective(45...) bei TForm1.FormResize einfach nur einmal gluPerspective(60...) in TForm1.FormResize aufzurufen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 05, 2009 17:56 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Ich weiß nicht ob es daran liegt, aber wird vor dem Zeichnen der Skybox der Tiefenbuffer geleert oder der Depthtest ausgeschaltet?

Und noch etwas in Sachen "Unschönheiten": Bei einer Skybox ist es egal wie groß sie gezeichnet wird, d.h. egal wie die Parameter bei GenerateSkybox sind (solange das Verhältnis zueinander gleich ist), das Ergebnis sieht immer gleich aus (wenn der Tiefentest aus ist, ansonsten wird die Skybox vllt teilweise verdeckt).

Hm, und in jedem Frame setzt du glClearColor, aber benutzen tust du es nicht oder?

Nach was: Kann es sein, dass die Matrix wenn die Skybox gezeichnet wird immernoch eine Translation enthält, d.h. verschoben ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 06, 2009 17:20 
Offline
DGL Member

Registriert: Mo Jan 05, 2009 14:45
Beiträge: 4
Vielen Dank erstma. Die Tipps haben schon prima "gewirkt" ^^

Ich hab die Texturen nochmal überprüft und die Verbesserungsvorschläge soweit wie möglich umgesetzt (hoffe ich); mit diesem Code funktioniert die Darstellung soweit, wie ich sie haben wollte:

Code:
  1.  
  2.  
  3.  
  4. gldepthMask(false);
  5. glMatrixMode(GL_MODELVIEW);
  6. // Liste aufrufen
  7. glCallList(List);
  8. gldepthMask(true);
  9. glDisable(GL_TEXTURE_2D);
  10. glClear(GL_DEPTH_BUFFER_BIT);
  11.   glLoadIdentity;
  12.        
  13.         glTranslatef(0,0,-40);
  14.  
  15.         glRotatef(xrot, 1, 0, 0);
  16.         glRotatef(yrot, 0, 1, 0);
  17.  
  18.              glPushMatrix();
  19.  
  20.                            [...Hier werden die ganzen Planeten gezeichnet...]
  21.  
  22.              glPopMatrix();
  23.  
  24.                                        glColor3f (1, 1, 1);   //<--------Warum ist das hier nötig? Sonst werden die Texturen alle mit der Farbe des letzten      
  25.                                                                      //Planeten  eingefärbt, obwohl textur enabled und disabled wird?
  26.  
  27.                                glEnable(GL_TEXTURE_2D);
  28.    drehen:=drehen+0.4 ;
  29.   SwapBuffers(DC);
  30.  
  31.  


Falls euch noch weitere Fehler aufstoßen, bitte bescheid sagen^^.

Nun wollte ich ja zusätzlich, wie vorher schon erwähnt, die Planeten mit Texturen beglücken, anstatt sie einfach einzufärben.
Um die Planeten zu zeichnen benutze ich ja GLuSphere, was wäre jetz sinnvoll, um einen Planeten zu texturieren? mit Gentexture zeigen mir alle Planeten trotz Drehung immer die selbe Seite.

Und wäre es möglich, die Sonne als Lichtquelle einzurichten, oder wäre das für einen Anfänger zu viel Aufwand?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 09, 2009 16:33 
Offline
DGL Member

Registriert: Do Dez 18, 2008 21:38
Beiträge: 60
Also ich hab auch mal so ein kleines Sonnensystem mit Sonne, Erde und Mond geschrieben und auch glGenTextures(...) verwendet, falls du das meinst. Bei mir haben mir die Planeten dann aber nicht immer die selbe Seite gezeigt, wenn ich sie mit glRotatef gedreht habe. Die Texturen werden ja schon vor dem Rendern geladen, also müsste eigentlich alles klappen. (Natürlich nur, wenn man die Planeten auch dreht :wink:).

Wie genau soll die Sonne als Lichtquelle denn aussehen? Soll die Sonne durch die Lichtquelle ersetzt werden, was zum Nachteil hätte, das man sie nicht mehr wirklich sieht, oder soll die Sonne so bleiben wie jetzt (nur mit Textur) und das Licht kommt aus ihr heraus? Das sähe zwar bestimmt schön aus, ist aber auch recht schwierig, da wenn man die Lichtquelle in die Sonne setzt man kein Licht mehr sieht :shock:, da die Sonne das Licht von innen ja nicht durchlässt (vielleicht mit Culling?). Dann müsste man entweder Lichter auf der Sonnenoberfläche benutzen oder die Sonne mit Blending transparent machen, sodass das Licht durch die Sonne hindurch scheinen könnte. Auf jeden Fall müsste man dann ja diffuses Licht benutzen, da die Richtung erkennbar ist und es mit Entfernung abnimmt.
Das hört sich leider sehr kompliziert an, aber vielleicht geht's auch einfacher, habe selbst noch nicht so viel mit Licht gearbeitet...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 10, 2009 16:30 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@glmatt: Du kannst deine Lichtquelle hinsetzen wo du willst. Eine Abschattung findet nicht statt. D.h. OpenGL Licht scheint auch durch Wände. Wer echten Schatten will, muss richtig arbeit investieren.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 10, 2009 18:20 
Offline
DGL Member

Registriert: Do Dez 18, 2008 21:38
Beiträge: 60
Oh, OK. Dann ist das mit der Sonne ja vielleicht gar nicht so schwierig :D

@Flash: Wird dann denn auch die Wand beleuchtet, durch die das Licht durchscheint? Also wenn ich die Sonne sehe und das Licht aus ihr "heraus" scheint, ist dann auch die Oberfläche der Sonne erleuchtet?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jan 10, 2009 21:40 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Öhmm... Nein. Die Beleuchtung wird anhand der Flächennormalen bestimmt. Und die Zeigt ja bei der Sonne für alle Flächen von der Lichtquelle weg.

Aber du kannst der Sonne ein selbstleuchtendes Material mit glMaterial zuordnen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 11, 2009 12:58 
Offline
DGL Member

Registriert: Mo Jan 05, 2009 14:45
Beiträge: 4
Und wie texturiere ich jetzt einen Planeten? Das Problem ist nämlich, dass die Skybox zum Texturieren scheinbar was anderes benutzt, als es in den restlichen Tutorials erklärt ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 11, 2009 15:35 
Offline
DGL Member

Registriert: Do Dez 18, 2008 21:38
Beiträge: 60
Also ich hab's immer so gemacht:

1. BindTexture EDIT: Oder auch Texture.Bind(), weil ja glBitmap benutzt wird.
2. gluQuadricTexture(...);
3. gluSphere(...);

Beschreibung zu gluQuadricTexture im wiki: http://wiki.delphigl.com/index.php/gluQuadricTexture

Ich habe immer GL_TRUE als zweiten Parameter von gluQuadricTexture benutzt, weil man sonst die Texturkoordinaten ja selber berechnen muss und dass war mir immer zu viel Aufwand :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 12, 2009 20:58 
Offline
DGL Member

Registriert: Mo Jan 05, 2009 14:45
Beiträge: 4
glmatt hat geschrieben:
Also ich hab's immer so gemacht:

1. BindTexture EDIT: Oder auch Texture.Bind(), weil ja glBitmap benutzt wird.
2. gluQuadricTexture(...);
3. gluSphere(...);

Beschreibung zu gluQuadricTexture im wiki: http://wiki.delphigl.com/index.php/gluQuadricTexture

Ich habe immer GL_TRUE als zweiten Parameter von gluQuadricTexture benutzt, weil man sonst die Texturkoordinaten ja selber berechnen muss und dass war mir immer zu viel Aufwand :wink:


Leider bin ich immer noch unfähig.....jetz wird die Skybox komplett falsch gezeichnet und der Planet ist immer noch nicht so, wie er sein sollte :D:
Code:
  1.  
  2.  
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   ExtCtrls, StdCtrls,dglOpenGL ,glbmp;
  6.  
  7. ...
  8.  
  9. var
  10.   Form1: TForm1;
  11.   drehen: GLfloat = 0;
  12.  SphereQuadratic : PGLUquadric;
  13.    SkyBoxTexture : Array[0..5] of TGLBmp;
  14.    planet: TGLBmp;
  15. implementation
  16. ...
  17.  
  18. procedure TForm1.SetupGL;
  19. begin
  20.  
  21.    glEnable(GL_DEPTH_TEST);          //Tiefentest aktivieren
  22.     //glEnable(GL_CULL_FACE);           //Backface Culling aktivieren
  23.   SphereQuadratic := gluNewQuadric();
  24.   gluQuadricTexture(SphereQuadratic,  TRUE);
  25.   gluQuadricNormals(SphereQuadratic, GLU_SMOOTH);
  26.  
  27.  
  28.         glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
  29. glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
  30.  
  31. // enable automatic texture coordinate generation
  32. glEnable(GL_TEXTURE_GEN_S);
  33. glEnable(GL_TEXTURE_GEN_T);
  34.  
  35. // enable the default light
  36. glEnable(GL_LIGHT0);
  37. glEnable(GL_LIGHTING);
  38. planet:= TGLBmp.Create;
  39.  
  40. end;
  41.  
  42. ...
  43.  
  44. procedure TForm1.Render;
  45. begin
  46. gldepthMask(false);
  47. glMatrixMode(GL_MODELVIEW);
  48. // Liste aufrufen
  49. glCallList(List);
  50. gldepthMask(true);
  51. //glDisable(GL_TEXTURE_2D);
  52.         glClear(GL_DEPTH_BUFFER_BIT);
  53.   glLoadIdentity;
  54.  
  55.         glTranslatef(0,0,-40);
  56.  
  57.                     glRotatef(xrot, 1, 0, 0);
  58.         glRotatef(yrot, 0, 1, 0);
  59.  
  60.  planet.LoadImage('planet.jpg');
  61.  
  62.   planet.GenTexture(true, true);
  63.  
  64. ... planeten...
  65.  
  66.  
  67.  


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