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

Aktuelle Zeit: Mo Jul 14, 2025 22:06

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



Ein neues Thema erstellen Auf das Thema antworten  [ 40 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 21, 2005 19:43 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
GluSphere im Wiki
Der erste Parameter ist ein PGluObject, dass du mit gluNewQuadric bekommst.
Bitte nur einmal aufrufen und den Wert speichern ;)

Texturiert wird automatisch wenn Textur gesetzt und aktiv ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 21, 2005 20:06 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Und genau da ist nascheinend mein Problem:

Wenn ich die Code-Zeile
Code:
  1.  
  2.  [...]
  3.  fTexture := gluNewQuadric;
  4. end;
  5.  

einfüge verändert sich gar nix(außer das noch ne Fehlermeldung dazu kommt - wieder:
Inkompatible Typen: 'TglBitmap2D' und 'PGLUQuadric'

Hab ich ganz am Anfang ausprobiert - ich hab nämlich ausnahmsweise mal zuerst ins Wiki geschaut und versucht mienen eigenen Kopf zu benutzen(gewöhnt euch ja nit dran :wink: ).

Nur bin ich dummerweise nit viel weiter gekommen...


cya
Deathball


PS: Schonmal ein Danke im Vorraus für die Antworten die schon gegeben wurden/nochn kommen werden...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 21, 2005 20:20 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
das kann so auch garnicht funktionieren.

eine textur ist kein quadic und eine Containerklasse wie glbitmap erst recht nicht

das ganze müsste ungefähr so aussehen:
Code:
  1. var
  2.   tex : glbitmap2D;
  3.   quad : PGLUQuadric;
  4.  
  5.  
  6. //initialisierung
  7. myQuadric := gluNewQuadric;
  8. tex := glbitmap2D.create;
  9. tex.loadfromfile('myfile');
  10. tex.gentexture;
  11. gluQuadricTexture(myQuadric, True);
  12.  
  13. //render
  14. tex.bind;
  15. gluSphere(quad, 1, 30, 30);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 21, 2005 22:26 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Oh ja... da hast du dich richtig verhaun Deathball. Das du Quadriken mit Texturen gleichgesetzt hast war ne Variante auf die man so leicht nicht kommt. Respeckt ;)

Wenn du's genauer mit den Quadriken wissen willst schau mal hier: http://wiki.delphigl.com/index.php/Quadrik
Ich geb zu, es war nicht überall verlinkt. Aber das korrigier ich gerade.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 22, 2005 16:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Hm...
jetzt könnte ich ein Problem haben...

ich hab keinen Peil auf wem ich die Schuld in die Schuhe schieben soll...
(Schul-)Lehrer geht ausnahmsweise mal nit, weil keiner dran beteiligt war(wo sind die eigentlich wenn man die mal wirklich braucht?)
Aber das löst ja immer noch nicht mein Problem mit der Schuldzuweisung...
Hm... *angestrengt nachdenk*
Ich habs!!! Flash ist der Schuldige!!! Weil ihm nit früher aufgefallen ist, dass teilweise Links auf den Quadrik-Artikel fehlen... Ja genau, der wars!!! Schäm dich!!!

:wink:


Aber noch ne Frage zum Code von Grizzly: Müsste
Code:
  1. myQuadric := gluNewQuadric;
nicht
Code:
  1. quad := gluNewQuadric;
heißen?
Und
Code:
  1. gluQuadricTexture(myQuadric, True);
nicht
Code:
  1. gluQuadricTexture(quad, True);
heißen?
Zumindest funktioniert es bei mir nur so, und es wäre für mich auch irgendwie logisch(wobei wir meine Logik bereits sehr schön zur Schau gestellt hab ^^° ), da ja auch die Variable quad heißt. Und was noch hinzu kommt das es funktioniert, wenn ich nur den Variablennamen nehme und nicht das myQuadric ^^ .

cya
Deathball


PS: Ach, und danke nochma für eure Geduld und natürlich auch eure Hife!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 22, 2005 19:07 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich !? Is ja nicht mein Wiki...hätte ja auch jemand anderes merken und beheben können... :P

Ja da hast du recht...sowas passiert wenn Leute onTheFly Quellcodeschnippselschreiben und im Kopf schon wieder andere Lösungsmöglichkeiten durchdenken...

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 22, 2005 19:52 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
öhm ja, müsste es. Wollte nur deine aufmerksamkeit testen :wink: :lol:

ok, hab da nich ganz aufgepasst als ich die variablendeklaration noch nachgeschoben habe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 01, 2005 18:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Hi!
So wies aussieht hab ich heut mal wieder einen der Tage, an denen bei mir jegliche Logik und Intelligenz sich im hintersten Stübchen meines Kopfes versteckt haben...

Also, ich bin versuche gerade mit dem Tutorial Lektion 8: Das Wesen von hell und dunkel zu verstehen wie man mit OpenGL Lichtquellen realisieren kann(mal abgesehen von den Lightmaps aus dem vorherigen Tutorial).

So, und da herrscht bei mir einfach nur Bahnhof...


Also einfach mal den Code angeschat und ausprobiert...
und jetzt herrscht bei mir noch größere Ratlosigkeit als vorher...

Warum bewirkt dieser Code:
Code:
  1.  
  2. procedure Licht;
  3. const
  4.     mat_specular   : Array[0..3] of GlFloat = (1.0, 1.0, 1.0, 1.0);
  5.     mat_shininess  : Array[0..0] of GlFloat = (50.0);
  6.     mat_ambient    : Array[0..3] of GlFloat = (0.4, 0.4, 0.4, 1.0);
  7.     mat_diffuse    : Array[0..3] of GlFloat = (0.4, 0.8, 0.4, 1.0);
  8.  
  9.     light_position : Array[0..3] of GlFloat = (10.0, 10.0, 0.0, 1.0);
  10.     light_ambient  : Array[0..3] of GlFloat = (0.8, 0.8, 0.8, 1.0);
  11.     light_diffuse  : Array[0..3] of GlFloat = (0.8, 0.8, 0.8, 1.0);
  12.  
  13. begin
  14.     glMaterialfv(GL_FRONT, GL_SPECULAR,  @mat_specular[0]);
  15.     glMaterialfv(GL_FRONT, GL_SHININESS, @mat_shininess[0]);
  16.     glMaterialfv(GL_FRONT, GL_AMBIENT,   @mat_ambient[0]);
  17.     glMaterialfv(GL_FRONT, GL_DIFFUSE,   @mat_diffuse[0]);
  18.  
  19.     glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient[0]);
  20.     glLightfv(GL_LIGHT0, GL_DIFFUSE,  @light_diffuse[0]);
  21.     glLightfv(GL_LIGHT0, GL_POSITION, @light_position[0]);
  22.  
  23.     glEnable(GL_LIGHTING);
  24.     glEnable(GL_LIGHT0);
  25. end;
  26.  


etwas anderes(nämlich eine grünlich beleuchtete Kugel, der es egal ist welche Farbe sie per glColor3f zugewiesen bekommen hat) als dieser Code:
Code:
  1.  
  2. var
  3.   mat_specular, mat_shininess, mat_ambient, mat_diffuse: GlFloat;
  4.   light_position, light_ambient, light_diffuse: GlFloat;
  5. [...]
  6.  
  7. procedure TForm1.VarInit;
  8. begin
  9.  mat_specular := 1.0;
  10.  mat_shininess := 50.0;
  11.  mat_ambient := 0.4;
  12.  mat_diffuse := 0.4;
  13.  light_position := 10.0;
  14.  light_ambient := 0.8;
  15.  light_diffuse := 0.8;
  16. end;
  17.  
  18. [...]
  19.  
  20. procedure Licht;
  21. begin
  22.  glMaterialfv(GL_FRONT, GL_SPECULAR,  @mat_specular);
  23.  glMaterialfv(GL_FRONT, GL_SHININESS, @mat_shininess);
  24.  glMaterialfv(GL_FRONT, GL_AMBIENT,   @mat_ambient);
  25.  glMaterialfv(GL_FRONT, GL_DIFFUSE,   @mat_diffuse);
  26.  
  27.  glLightfv(GL_LIGHT0, GL_AMBIENT,  @light_ambient);
  28.  glLightfv(GL_LIGHT0, GL_DIFFUSE,  @light_diffuse);
  29.  glLightfv(GL_LIGHT0, GL_POSITION, @light_position);
  30.  
  31.  glEnable(GL_LIGHTING);
  32.  glEnable(GL_LIGHT0);
  33. end;
  34.  

(nämlich eine weiße Kugel, der es egal ist welche Farbe sie per glColor3f zugewiesen bekommen hat).



So, und abschließend noch ein paar Fragen, die meine derzeitige Ratlosigkeit sehr schön veranschaulichen ^^" :

1.
Code:
  1.    glLightfv(GL_LIGHT0, GL_POSITION, @light_position[0]);

Die Variable light_position[0] besitzt doch aber nur einen einzigen Wert, oder? Ich dachte eigentlich das da Raumkoordinaten hingehören, was dann ja 3 Werte sein müssten, oder?

2. Warum sind bei dem Beispiel oben(zumindest so wie ich es verstanden hab) in einer Lichtquelle ein Wert für ambientes Licht und ein Wert für diffuses Licht in ein und derselben Lichtquelle? Widerspricht sich das nicht?

3. Die Eigenschaften die man gesetzt hat, beispielsweise Materialeigenschaften, gelten solange für alle gezeichneten Objekte bis sie wieder verändert werden, oder?


so, das sind die Fragen die mir derzeit auf der Seele liegen...

cya und schonmal Danke für die Antworten,
Deathball


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 01, 2005 18:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 26, 2002 22:12
Beiträge: 259
Wohnort: Dresden
Nun. Wenn du dir den Code genau anschaust so übergibst du nicht den Wert in den Variablen selbst sondern die Adresse (@) der Variable und die Funktion glLightfv holt sich dann die benötigten Werte aus der Adresse. Dies hat den Vorteil, dass du ganze Strukturen oder Arrays übergeben kannst egal welchen Typs diese sind. Hauptsache ist, dass deren Aufbau gleich ist.

Der Aufbau der Strukturen ist jedoch vorgeschrieben. Es werden also an einigen Stellen 4 Singles verlangt. Das bei Werten für GL_AMBIENT auch absolut sinnvoll, denn irgendwie musst du ja deine Farbwerte übergeben. In einem Single macht sich das schlecht. Und genau das ist wiederum der Grund, warum dein Code nicht funktioniert, denn du erfüllst nicht die Voraussetzungen, da du nur einen Single übergibst.

@2:
Eine Lichtquelle kann mehrere Eigenschaften haben. Darum kann sie auch einen ambienten Teil und einen diffusen Teil haben. Spiel’ am besten mit den Werten etwas umher und diese Frage wird sich von allein beantworten.

@3:
Ganz genau. Das ist im übrigen bei allen OpenGL-States der Fall, denn OpenGL ist ein Zustandsautomat. Die Werte bleiben immer beibehalten, bis du den jeweiligen Zustand änderst.

_________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 01, 2005 19:09 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
glColor() wirkt sich erst wieder aus , wenn du glEnble(GL_COLOR_MATERIAL) aufrufst (siehe http://wiki.delphigl.com/index.php/GlEnable)

Infos die dir die Beleuchtung näher bringen findest du hier:
http://wiki.delphigl.com/index.php/Beleuchtung
und natürlich http://wiki.delphigl.com/index.php/glLight sowie http://wiki.delphigl.com/index.php/GlMaterial

Unser Wiki is ne feine Sache oder? Dort mal unter Hintergrundwissen geguckt, und man ist hin und wieder etwas schlauer ;)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 02, 2005 10:25 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Geht eigentlich die Anzahl der Fragen seit dem Wiki-Start hier spürbar zurück? Will Statistiken sehen ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 02, 2005 14:47 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nein. Weil vorallem Anfänger das Wiki nicht als Infoquelle ansehen. Viele denken vermutlich, dass dort eh nichts zu ihren Fragen steht. Außerdem ist das Wiki ja zu 75% eine Doko-/Spezifikationssammlung.

Man muss den Leuten erst zeigen, was es im Wiki alles gibt...

(Das Wiki wird aber schon recht häufig besucht. Mein letztes Tut z.B. hat so täglich um die 25-30 Aufrufe.)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 02, 2005 17:21 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
nicht zu vergessen, dass man beim wiki idR schon ziemlich genau wissen muss, wonach man sucht, was bei Anfängern nicht zwingend gegeben ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 02, 2005 18:34 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Grizzly hat geschrieben:
nicht zu vergessen, dass man beim wiki idR schon ziemlich genau wissen muss, wonach man sucht, was bei Anfängern nicht zwingend gegeben ist.

Genau das sollte eigentlich vermieden werden. Ziel beim Wikiausbau sollte nämlich auch sein, die Artikel so mitenander zu verlinken, dass es ausreicht einen Artikel aus der gewünschten Richtung auszuwählen, und man von ganz alleine dann nach maximal 4 Artikeln zum Ziel findet.

Wer z.B. wissen will wie die Beleuchtung funktioniert kann glLight suchen und findet dort den Beleuchtungsartikel under "Siehe Auch".

Ich gebe zu, dass das momentan noch nicht sehr weit ausgebaut ist. Aber auch da hoffe ich auf die Mitarbeit der Community und der Wikinutzer. Wer also einen "versteckten" Artikel findet und meint "Hey der passt wunderbar zu Artikel XYZ" dann verlinkt die Sachen einfach untereinander. Es muss im Wiki ein richtiger "Fitz" entstehen. ;)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 08, 2005 10:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Aug 25, 2005 16:00
Beiträge: 189
Programmiersprache: Java, C#
Bei mir ist noch eine Frage aufgetaucht...
Im Wiki heißt es ja:
Zitat:
glRotate - Multipliziert die aktuelle Matrix mit einer Rotationsmatrix.


Das bedeutet, wenn ich es richtig verstanden hab, das man die aktuelle Position eines Objekts ausrechnen kann(natürlich vorraussetzung das man die "Startposition" und den Winkel sowie die Achse kennt).

Wie kann ich das?

Denn ich möchte die Sicht auf eine Kugel die um einen bestimmten Punkt rotiert zentrieren(also zum Mittelpunkt machen), egal wo sie sich gerade befindent...
Und im Wiki hab ich bisher noch keine Formel gefunden, was mir in dem Punkt weiterhilft...

cya und schonmal Danke...
Deathballl


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] 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.010s | 15 Queries | GZIP : On ]