gleSuperExtrusion(3GLE)
π gleSuperExtrusion β the GLE glow-up page (3GLE) π
okay bestie, sit DOWN, because we're about to extrude a 2D contour along a 3D path with local affine transformations, and honestly? it's giving main character energy π¦β¨
β¨ NAME β¨
gleSuperExtrusion β extrude arbitrary 2D contour along arbitrary 3D path, specifying local affine transformations. no cap, that's literally the whole job π
πΈ SYNTAX πΈ
void gleSuperExtrusion (int ncp,
gleDouble contour[][2],
gleDouble cont_normal[][2],
gleDouble up[3],
int npoints,
gleDouble point_array[][3],
float color_array[][3],
gleDouble xform_array[][2][3]);
copy it exactly, don't be creative with the types, the compiler will literally humble you π
π ARGUMENTS π
ncpβ number of contour points. the headcount for your contour, fr fr.contourβ the 2D contour itself. this is the shape, the moment, the vibe π«Άcont_normalβ 2D contour normals. the perpendicular besties.upβ up vector for the contour. it tells your contour which way is up, spiritually and geometrically.npointsβ numpoints in the poly-line. how many stops on this lil journey.point_arrayβ polyline vertices. the path. the road trip. the itinerary πΊοΈcolor_arrayβ colors at polyline verts. aesthetic per vertex, iconic.xform_arrayβ 2D contour affine transforms. the local glow-up, applied at every step β¨
π DESCRIPTION π
Extrude arbitrary 2D contour along arbitrary 3D path, specifying local affine transformations. As the contour is extruded, the affine will be applied to the points in the contour. like, every step along the way gets its own lil transformation moment, and the contour just keeps slaying forward π«
The argument "contour" specifies the 2D contour to be extruded, while the argument "point_array" specifies the path along which to extrude. The vector "up" defines the orientation of the contour y-axis in real 3D space. so "up" is lowkey the contour's sense of direction in the big scary 3D world π
β οΈ okay this part is IMPORTANT, bestie, listen: neither the very first segment, nor the very last segment are drawn. The first and last segments serve only to define the angle of the join at the very ends of the polyline. Thus, to draw one segment, three must be specified. To draw two segments, four must be specified, etc. it's not a bug it's a whole lifestyle, the ends are just there for β¨vibesβ¨ and angles. do NOT come crying to me when your one-segment render shows up empty π
The normal array may be NULL. If it is, normal vectors will NOT be automatically generated, and the object will look terrible when lit. i'm not being dramatic, that's the actual documented consequence. unlit blob behaviour. tragic π
The color array may be NULL. If NULL, the current color is used. If not NULL, the glColor3f() routine is used to set the color; therefore, specifying the glColorMaterial() subroutine before this primitive can be used to set diffuse, specular, ambient, etc. colors. so yes, you can set diffuse, specular, ambient, etc. colors this way, and yes, that is a serve πΈ
π¦ SEE ALSO π¦
gleExtrusiongleTwistExtrusion
go read those too, they're the sibling icons of the family π«Ά
π AUTHOR π
Linas Vepstas (linas@linas.org) β the original mastermind, we stan π
okay that's the whole page!! this came from the GLE manual, version 3.0, and it lives under gleSuperExtrusion(3GLE) π go forth and extrude responsibly, bestie, ily πβ¨
π¦ where this page comes from
- debian bookworm: libgle3-dev 3.1.0-10 Β· GPL-2.0-only
- debian trixie: libgle3-dev 3.1.2-1+b2 Β· GPL-2.0-only
- fedora 43: libgle-devel 3.1.0-36.fc43 Β· GPL-2.0-only OR (ClArtistic AND LicenseRef-Callaway-MIT)
- fedora 43: libgle-devel 3.1.0-36.fc43 Β· GPL-2.0-only OR (ClArtistic AND LicenseRef-Callaway-MIT)
- fedora 44: libgle-devel 3.1.0-37.fc44 Β· GPL-2.0-only OR (ClArtistic AND LicenseRef-Callaway-MIT)
- fedora 44: libgle-devel 3.1.0-37.fc44 Β· GPL-2.0-only OR (ClArtistic AND LicenseRef-Callaway-MIT)
- nixos 26.05: gle 3.1.2
- nixpkgs unstable: gle 3.1.2
- opensuse-leap 16.0: gle-devel 3.1.2-bp160.1.13 Β· GPL-2.0-or-later
- opensuse-leap 16.0: gle-devel 3.1.2-bp160.1.13 Β· GPL-2.0-or-later
- opensuse-leap 16.0: gle-devel 3.1.2-bp160.1.13 Β· GPL-2.0-or-later
- opensuse-leap 16.0: gle-devel 3.1.2-bp160.1.13 Β· GPL-2.0-or-later
- ubuntu jammy: libgle3-dev 3.1.0-10 Β· GPL-2.0-only
- ubuntu noble: libgle3-dev 3.1.2-1build1 Β· GPL-2.0-only
- ubuntu questing: libgle3-dev 3.1.2-1build1
- ubuntu resolute: libgle3-dev 3.1.2-1build2 Β· GPL-2.0-only
- ubuntu stonking: libgle3-dev 3.1.2-1build2 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms