| Autor |
Beitrag |
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 23.12.07 13:39
Hi,
im Anhang habe ich ein Beispiel für das Problem. Ich habe auch im Internet ein Programm gefunden, bei dem es richtig aussah, aber im Code hab ich keine Unterschiede gefunden.
Initialisierung 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TOpenGLWorks.InitDraw; begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity; gluPerspective(45.0, VPanel.Width/VPanel.Height, NearClipping, FarClipping); glMatrixMode(GL_MODELVIEW); glLoadIdentity;
glTranslatef(-CenterMoveX/Scaler,-CenterMoveY/Scaler,-CenterMoveZ/Scaler);
glRotatef(RotateZ,0,0,1); glRotatef(RotateY,1,0,0); glRotatef(RotateX,0,1,0);
glTranslatef(-FreeMoveX/Scaler,-FreeMoveY/Scaler,-FreeMoveZ/Scaler);
LightsCount:=0;
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, @light_model_ambient[0]); end; |
Initialisierung des Quadrics 1: 2: 3: 4: 5: 6: 7:
| procedure TOpenGLWorks.InitQObj0; begin qobj0:=gluNewQuadric; gluQuadricDrawStyle(qobj0, GLU_FILL); gluQuadricNormals(qobj0, GLU_SMOOTH); gluQuadricTexture(qobj0,True); end; |
Initialisierung des Lichts 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TOpenGLWorks.InstallLight(Color: array of Single); var light_position : Array[0..3] of GlFloat; F:TFont; begin light_position[0]:=0; light_position[1]:=0; light_position[2]:=0; light_position[3]:=1;
[...]
glLightf(GL_LIGHT0+LightsCount, GL_CONSTANT_ATTENUATION, 100.0/1e9*Scaler); glLightf(GL_LIGHT0+LightsCount, GL_LINEAR_ATTENUATION, 0.0000000005/1e9*Scaler); glLightf(GL_LIGHT0+LightsCount, GL_QUADRATIC_ATTENUATION, 0.0000000005/1e9*Scaler);
glLightfv(GL_LIGHT0+LightsCount, GL_SPECULAR, @Color[0]); glLightfv(GL_LIGHT0+LightsCount, GL_AMBIENT, @light_ambient[0]); glLightfv(GL_LIGHT0+LightsCount, GL_DIFFUSE, @Color[0]); glLightfv(GL_LIGHT0+LightsCount, GL_POSITION, @light_position[0]);
glEnable(GL_LIGHT0+LightsCount);
LightsCount:=LightsCount+1; end; |
kann auch noch mehr Code zeigen, wenn ich nur wüsste, was
Xion
Einloggen, um Attachments anzusehen!
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: So 23.12.07 14:10
glEnable(GL_NORMALIZE);
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: So 23.12.07 14:32
hmmm, hat leider nichts gebracht...
Initialisierung von OpenGL 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| function TOpenGLWorks.InitializeOpenGL(Panel: TWinControl):boolean; begin DC:= GetDC(Panel.Handle);
Result:=InitOpenGL;
RC:= CreateRenderingContext( DC, [opDoubleBuffered], 32, 24, 0,0,0, 0);
ActivateRenderingContext(DC, RC);
VPanel:=Panel;
glClearColor(0, 0, 0, 0); glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glEnable(GL_LINE_SMOOTH); glEnable(GL_NORMALIZE); glShadeModel(GL_SMOOTH); InitQObj0;
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); end; |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Jerk
      
Beiträge: 251
Vista Ultimate, Ubuntu
Turbo Delphi 2006
|
Verfasst: Fr 28.12.07 22:32
Versuchs mal mit
glDepthFunc(GL_ALWAYS);
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 04.01.08 16:09
das führt dazu, dass der Ring vom Saturn nicht mehr durch den Saturn verdeckt wird. Ich hab bei einem Kumpel gesehen, dass es bei ihm richtig aussieht, nur bei mir siehts schlecht auf, und zwar auf Hauptrechner und Notebook
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 04.01.08 17:29
Xion hat folgendes geschrieben: |
Initialisierung von OpenGL 1: 2:
| glShadeModel(GL_SMOOTH); end; | |
Hm. Eventuell macht deine Hardware ja hier Fehler..
Was hast du für Grafikkarten und Treiber? Und was hat dein Tester?
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 04.01.08 17:55
ich hab eine Radeon X1600 Pro. Die wurde erst vor kurzem eingebaut und neue Treiber installiert. Weiß nicht, was mein Kumpel hat...mal sehen, wann er antwortet...
//Edit:
er hat eine
| maggistro hat folgendes geschrieben: | | 7950 gt |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Fr 04.01.08 18:31
Und wie malst du denn die "Murmel" ?
Delphi-Quelltext 1: 2:
| gluSphere(qobj0, ????????); |
Oder hänge einfach mal das Prg. an. (aber bitte keine 1,0815 MB) 
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 04.01.08 18:39
hmm, anhängen ist nicht so einfach, da das Programm relativ groß ist. Auch der Code is nicht wenig
Kugel malen 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TOpenGLWorks.PaintBall(R: real; Parts: integer; i: real; TexID: integer; Rot: real); begin if TexID<>-1 then begin glEnable(GL_TEXTURE_2D); Textures[TexID].Bind; end; glRotatef(90,1,0,0); glRotatef(i,0,1,0); glRotatef(-Rot,0,0,1); gluSphere(qobj0, R/Scaler, Parts, Parts); glRotatef(Rot,0,0,1); glRotatef(-i,0,1,0); glRotatef(-90,1,0,0); glDisable(GL_TEXTURE_2D);
end; |
wenn das nichts bringt, dann kann ich mal die ganze Unit anhängen...
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 04.01.08 18:48
Die Karte (also die von deinem Tester) hab ich auch... würde also wenig bringen.
Wobei das mit deiner ATI schon sein kann. Ich weiß schon warum ich den Verein nicht mag
Mach doch vllt mal ein Testprojekt. Nur Quadric, Licht und Textur. Verhält es sich da auch so? Wenn ja, kannst du ja die mal hochladen...
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Fr 04.01.08 19:18
Wie sind die Werte von Parts & Parts ? Nicht zu niedrig ? Z.B. Eine Kugel mit 16 x 16
verursacht so etwas kommt noch hinzu wie gross der Radius ist.
Je grösser die Kugel ist um so mehr Slices, Stacks muss sie beinhalten.
Je mehr Quad also Vierecke um so besser die Schattendarstellung aber auch
die Rechenleistung wird höher.
Kannst du dir gern mal am Schneeman anschauen (siehe Prg. im Anhang).
Einloggen, um Attachments anzusehen!
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 04.01.08 22:07
Die Kugel hat 20x20 Slices. Wie man auf dem Bild erkennen kann, liegt es wohl an meiner Hardware...
//Edit: das Bild ist nicht sehr gut, aber auf jeden Fall sind die Kanten wieder zu sehen...
Einloggen, um Attachments anzusehen!
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Sa 05.01.08 00:04
Nein, es liegt nicht an deiner Karte. Es liegt an OpenGl und deiner Kugel.
Eine Kugel mit dem Radius von zB. 100 Pixeln und 20 Slices sowie Stacks
und einem Betrachtungsabstand von 400 Pixeln erzeugt nun einmal sichtmare
Raster. Entweder du erhöst die Slices & Stacks (bei dir Parts) oder den
Betrachtungsabstand. Nun kannst du zwar die Anzahl der Slices 6 Stacks
erhöhen (zB. auf 64) um den Schatteneffect besser geltend zu machen
aber wenn nu nun den Betrachtungsabstand verringerst kommt das selbe
"Problem" zum Vorschein.
OpenGL (sowie DirectX) rendert nun mal keine echten Schatten sonder simuliert ihn.
Dabei wird einfach die Dreiecksaufteilung in einem Viereck verwendet.
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 05.01.08 10:22
und warum ging es dann bei meinem Tester so gut? Find ich irgendwie unlogisch
auch bei 64 ist der effekt exakt der selbe, nur dass die Kanten noch schärfer und kleiner sind. Und es ruckelt ohne Ende XD
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Sa 05.01.08 10:44
Es kommt auf die OpenGL-Version und die verwendete Graka. an.
Kann auch am Antialiasing liegen wie das auf der jew. Graka. eingestellt ist.
MAch doch bitte noch mal ein Bild mit einem grösseren Ausschnit und erhöten
Slices & Stacks. Dass das Prog. dann ruckeln könnte sagte ich dir ja schon.
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 05.01.08 10:52
hier das Bild
Einloggen, um Attachments anzusehen!
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Sa 05.01.08 11:17
Hm, das sieht wirklich komisch aus. Die Lichtquellen sin alle initialisiert und
angeschaltet ?
Klammer mal den Teil bei dir aus:
Delphi-Quelltext 1: 2: 3: 4:
| glLightf(GL_LIGHT0+LightsCount, GL_CONSTANT_ATTENUATION, 100.0/1e9*Scaler); glLightf(GL_LIGHT0+LightsCount, GL_LINEAR_ATTENUATION, 0.0000000005/1e9*Scaler); glLightf(GL_LIGHT0+LightsCount, GL_QUADRATIC_ATTENUATION, 0.0000000005/1e9*Scaler); |
Delphi-Quelltext 1: 2:
| glLightModelfv(GL_LIGHT_MODEL_AMBIENT, @light_model_ambient[0]); |
Wie schaut es denn dan aus ?
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 05.01.08 11:22
keine Veränderung...die Kanten sind nach wie vor da...
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
turboPASCAL
      
Beiträge: 193
Erhaltene Danke: 1
Win XP / Vischda
D6 PE / D2005 PE
|
Verfasst: Sa 05.01.08 11:37
...und nun noch folgende Änderung zu der obigen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| function TOpenGLWorks.InitializeOpenGL(Panel: TWinControl):boolean; begin DC:= GetDC(Panel.Handle);
Result:=InitOpenGL;
RC:= CreateRenderingContext( DC, [opDoubleBuffered], 32, 24, 0,0,0, 0);
ActivateRenderingContext(DC, RC);
VPanel:=Panel;
glClearColor(0, 0, 0, 0); glClearDepth(1.0); glShadeModel(GL_SMOOTH); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_TEST); glEnable(GL_NORMALIZE); glEnable(GL_LINE_SMOOTH); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glEnable(GL_LIGHTING); InitQObj0;
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); end; |
Dann hätte ich gern noch ein Bildchen. 
_________________ Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus...
|
|
Xion 
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Sa 05.01.08 11:59
hmm, also ich sehe keinen unterschied...ah doch, es ist mehr Umgebunglicht da.
Einloggen, um Attachments anzusehen!
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
|