| |
|
|
Sven Bader | Aus einem cette uralten Beispiele de opengl.org habe je quelque chose pour Profan traduit et ihm zusätzlich encore Texturkoordinaten verpasst - là gäbe es chez so einem komplexen objet sûrement plusieurs Ansätze.
Herunterladen
Im opposition le internen OpenGL Objekten, sollte qui Torus dans chaque le cas auparavant mir StartList/Endlist gespeichert et DrawList abgerufen volonté.
Ähnlich comment chez qui Kugel (Sphere) laisser sich qui Segmente dans deux Dimensionen choisir, zusätzlich peux qui dedans- et Außenradius angegeben volonté.
Zum besseren Verständnis, une korrekte Textur muss dans etwa so aufgebaut son
ici seulement qui Funktion selbst:
Proc Torus
Paramètres majorRadius!, minorRadius!, numMajor%, numMinor%
Déclarer majorStep!, minorStep!
Déclarer a0!,a1!,x0!,y0!,x1!,y1!,b!,c!,r!,z!,loop2&
majorStep! = 2.0*Pi() / numMajor%
minorStep! = 2.0*Pi() / numMinor%
WhileLoop 0, numMajor% - 1
a0! = &loop * majorStep!
a1! = a0! + majorStep!
x0! = cos(a0!)
y0! = sin(a0!)
x1! = cos(a1!)
y1! = sin(a1!)
loop2& = &loop
oGL("glBegin", ~GL_TRIANGLE_STRIP)
WhileLoop 0, numMinor%
b! = &loop * minorStep!
c! = cos(b!)
r! = minorRadius! * c! + majorRadius!
z! = minorRadius! * sin(b!)
oGL("glNormal3f", x0!*c!, y0!*c!, z!/minorRadius!)
oGL("glTexCoord2f", loop2& / numMajor%, &loop / numMinor%)
oGL("glVertex3f", x0!*r!, y0!*r!, z!)
oGL("glNormal3f", x1!*c!, y1!*c!, z!/minorRadius!)
oGL("glTexCoord2f", (loop2& + 1) / numMajor%, &loop / numMinor%)
oGL("glVertex3f", x1!*r!, y1!*r!, z!)
Endwhile
oGL("glEnd")
Endwhile
ENDPROC
|
|
|
| |
|
|