glu(3erl)
π glu β Erlang wrapper functions for OpenGL π
Manual page glu(3erl) β Erlang Module Definition. Okay bestie, this is part 1, and it's literally the glu wrapper functions for OpenGL. The whole page is a brief version of the complete OpenGL reference pages, so it's giving βcheat sheet but make it sparkle.β β¨
β¨ NAME β¨
glu β Erlang wrapper functions for OpenGL.
π¦ DESCRIPTION π¦
Standard OpenGL API.
This documents the functions as a brief version of the complete OpenGL reference pages.
π DATA TYPES π
Lowkey these type aliases are the whole vibe check for the page:
vertex() = {float(), float(), float()}
i() = integer()
f() = float()
enum() = integer() >= 0
matrix() = m12() | m16()
m12() =
{f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}
m16() =
{f(),
f(),
f(),
f(),
f(),
f(),
f(),
f(),
f(),
f(),
f(),
f(),
f(),
f(),
f(),
f()}
π EXPORTS π
πΈ build1DMipmapLevels/9 πΈ
build1DMipmapLevels(Target, InternalFormat, Width, Format, Type,
Level, Base, Max, Data) ->
i()
Types:
Target = enum()
InternalFormat = Width = i()
Format = Type = enum()
Level = Base = Max = i()
Data = binary()
glu:build1DMipmapLevels/9 builds a subset of prefiltered one-dimensional texture maps of decreasing resolutions called a mipmap. This is used for the antialiasing of texture mapped primitives. Obsessed, honestly.
External documentation.
π¦ build1DMipmaps/6 π¦
build1DMipmaps(Target, InternalFormat, Width, Format, Type, Data) ->
i()
Types:
Target = enum()
InternalFormat = Width = i()
Format = Type = enum()
Data = binary()
glu:build1DMipmaps/6 builds a series of prefiltered one-dimensional texture maps of decreasing resolutions called a mipmap. This is used for the antialiasing of texture mapped primitives. Periodt.
External documentation.
π build2DMipmapLevels/10 π
build2DMipmapLevels(Target, InternalFormat, Width, Height, Format,
Type, Level, Base, Max, Data) ->
i()
Types:
Target = enum()
InternalFormat = Width = Height = i()
Format = Type = enum()
Level = Base = Max = i()
Data = binary()
glu:build2DMipmapLevels/10 builds a subset of prefiltered two-dimensional texture maps of decreasing resolutions called a mipmap. This is used for the antialiasing of texture mapped primitives.
External documentation.
π build2DMipmaps/7 π
build2DMipmaps(Target, InternalFormat, Width, Height, Format,
Type, Data) ->
i()
Types:
Target = enum()
InternalFormat = Width = Height = i()
Format = Type = enum()
Data = binary()
glu:build2DMipmaps/7 builds a series of prefiltered two-dimensional texture maps of decreasing resolutions called a mipmap. This is used for the antialiasing of texture-mapped primitives.
External documentation.
π build3DMipmapLevels/11 π
build3DMipmapLevels(Target, InternalFormat, Width, Height, Depth,
Format, Type, Level, Base, Max, Data) ->
i()
Types:
Target = enum()
InternalFormat = Width = Height = Depth = i()
Format = Type = enum()
Level = Base = Max = i()
Data = binary()
glu:build3DMipmapLevels/11 builds a subset of prefiltered three-dimensional texture maps of decreasing resolutions called a mipmap. This is used for the antialiasing of texture mapped primitives.
External documentation.
π«Ά build3DMipmaps/8 π«Ά
build3DMipmaps(Target, InternalFormat, Width, Height, Depth,
Format, Type, Data) ->
i()
Types:
Target = enum()
InternalFormat = Width = Height = Depth = i()
Format = Type = enum()
Data = binary()
glu:build3DMipmaps/8 builds a series of prefiltered three-dimensional texture maps of decreasing resolutions called a mipmap. This is used for the antialiasing of texture-mapped primitives.
External documentation.
π checkExtension/2 π
checkExtension(ExtName :: string(), ExtString :: string()) ->
0 | 1
glu:checkExtension/2 returns ?GLU_TRUE if ExtName is supported otherwise ?GLU_FALSE is returned. Fr fr, that's the whole check.
External documentation.
π cylinder/6 π
cylinder(Quad :: i(),
Base :: f(),
Top :: f(),
Height :: f(),
Slices :: i(),
Stacks :: i()) ->
ok
glu:cylinder/6 draws a cylinder oriented along the z axis. The base of the cylinder is placed at z = 0 and the top at z=height. Like a sphere, a cylinder is subdivided around the z axis into slices and along the z axis into stacks.
External documentation.
π deleteQuadric/1 π
deleteQuadric(Quad :: i()) -> ok
glu:deleteQuadric/1 destroys the quadrics object (created with glu:newQuadric/0) and frees any memory it uses.
Onceglu:deleteQuadric/1has been called,Quadcannot be used again. No cap, it's done.
External documentation.
π§ disk/5 π§
disk(Quad :: i(),
Inner :: f(),
Outer :: f(),
Slices :: i(),
Loops :: i()) ->
ok
glu:disk/5 renders a disk on the z = 0 plane. The disk has a radius of Outer and contains a concentric circular hole with a radius of Inner. If Inner is 0, then no hole is generated. The disk is subdivided around the z axis into slices (like pizza slices) and also about the z axis into rings (as specified by Slices and Loops, respectively). Pizza slices, bestie. π
External documentation.
π₯ errorString/1 π₯
errorString(Error :: enum()) -> string()
glu:errorString/1 produces an error string from a GL or GLU error code. The string is in ISO Latin 1 format. For example, glu:errorString/1(?GLU_OUT_OF_MEMORY) returns the string out of memory.
External documentation.
β getString/1 β
getString(Name :: enum()) -> string()
glu:getString/1 returns a pointer to a static string describing the GLU version or the GLU extensions that are supported.
External documentation.
π lookAt/9 π
lookAt(EyeX, EyeY, EyeZ, CenterX, CenterY, CenterZ, UpX, UpY, UpZ) ->
ok
Types:
EyeX = EyeY = EyeZ = CenterX = CenterY = CenterZ = UpX = UpY =
UpZ = f()
glu:lookAt/9 creates a viewing matrix derived from an eye point, a reference point indicating the center of the scene, and an UP vector. Main character camera energy.
External documentation.
π newQuadric/0 π
newQuadric() -> i()
glu:newQuadric/0 creates and returns a pointer to a new quadrics object. This object must be referred to when calling quadrics rendering and control functions. A return value of 0 means that there is not enough memory to allocate the object.
External documentation.
πΈ ortho2D/4 πΈ
ortho2D(Left :: f(), Right :: f(), Bottom :: f(), Top :: f()) ->
ok
glu:ortho2D/4 sets up a two-dimensional orthographic viewing region. This is equivalent to calling gl:ortho/6 with near=-1 and far=1.
External documentation.
π¦ partialDisk/7 π¦
partialDisk(Quad, Inner, Outer, Slices, Loops, Start, Sweep) -> ok
Types:
Quad = i()
Inner = Outer = f()
Slices = Loops = i()
Start = Sweep = f()
glu:partialDisk/7 renders a partial disk on the z=0 plane. A partial disk is similar to a full disk, except that only the subset of the disk from Start through Start + Sweep is included (where 0 degrees is along the +f2yf axis, 90 degrees along the +x axis, 180 degrees along the -y axis, and 270 degrees along the -x axis).
External documentation.
π perspective/4 π
perspective(Fovy :: f(), Aspect :: f(), ZNear :: f(), ZFar :: f()) ->
ok
glu:perspective/4 specifies a viewing frustum into the world coordinate system. In general, the aspect ratio in glu:perspective/4 should match the aspect ratio of the associated viewport. For example, aspect=2.0 means the viewer's angle of view is twice as wide in x as it is in y. If the viewport is twice as wide as it is tall, it displays the image without distortion.
External documentation.
π pickMatrix/5 π
pickMatrix(X :: f(),
Y :: f(),
DelX :: f(),
DelY :: f(),
Viewport :: {i(), i(), i(), i()}) ->
ok
glu:pickMatrix/5 creates a projection matrix that can be used to restrict drawing to a small region of the viewport. This is typically useful to determine what objects are being drawn near the cursor. Use glu:pickMatrix/5 to restrict drawing to a small region around the cursor. Then, enter selection mode (with gl:renderMode/1) and rerender the scene. All primitives that would have been drawn near the cursor are identified and stored in the selection buffer.
External documentation.
π«Ά project/6 π«Ά
project(ObjX, ObjY, ObjZ, Model, Proj, View) ->
{i(), WinX :: f(), WinY :: f(), WinZ :: f()}
Types:
ObjX = ObjY = ObjZ = f()
Model = Proj = matrix()
View = {i(), i(), i(), i()}
glu:project/6 transforms the specified object coordinates into window coordinates using Model, Proj, and View. The result is stored in WinX, WinY, and WinZ. A return value of ?GLU_TRUE indicates success, a return value of ?GLU_FALSE indicates failure.
External documentation.
π quadricDrawStyle/2 π
quadricDrawStyle(Quad :: i(), Draw :: enum()) -> ok
glu:quadricDrawStyle/2 specifies the draw style for quadrics rendered with Quad. The legal values are as follows:
External documentation.
π
quadricNormals/2 π
quadricNormals(Quad :: i(), Normal :: enum()) -> ok
glu:quadricNormals/2 specifies what kind of normals are desired for quadrics rendered with Quad. The legal values are as follows:
External documentation.
π quadricOrientation/2 π
quadricOrientation(Quad :: i(), Orientation :: enum()) -> ok
glu:quadricOrientation/2 specifies what kind of orientation is desired for quadrics rendered with Quad. The Orientation values are as follows:
External documentation.
π¦ quadricTexture/2 π¦
quadricTexture(Quad :: i(), Texture :: 0 | 1) -> ok
okay so glu:quadricTexture/2 is the vibe check for texture coords on quadrics π
β it says whether texture coordinates should be generated for quadrics rendered with Quad. If the value of Texture is ?GLU_TRUE, then texture coordinates are generated (slay β¨), and if Texture is ?GLU_FALSE, they are not (nope, not today). The initial value is ?GLU_FALSE, so it's off by default β you gotta turn it on yourself, bestie.
π External documentation.
π scaleImage/9
scaleImage(Format, WIn, HIn, TypeIn, DataIn, WOut, HOut, TypeOut,
DataOut) ->
i()
Types:
Format = enum()
WIn = HIn = i()
TypeIn = enum()
DataIn = binary()
WOut = HOut = i()
TypeOut = enum()
DataOut = mem()
So glu:scaleImage/9 scales a pixel image β and the way it does it is so specific: it uses the appropriate pixel store modes to unpack the data from the source image and pack it into the destination image. Unpack from DataIn, pack into DataOut, no cap. πΌοΈβ¨
π External documentation.
π¦ sphere/4
sphere(Quad :: i(), Radius :: f(), Slices :: i(), Stacks :: i()) ->
ok
glu:sphere/4 draws a sphere of the given Radius, centered around the origin β main character geometry fr π₯. The sphere is subdivided around the z axis into slices and along the z axis into stacks (literally like lines of longitude and latitude, iykyk π).
π External documentation.
π§ tesselate/2
tesselate(Normal, Vs :: [Vs]) -> {Triangles, VertexPos}
Types:
Normal = Vs = vertex()
Triangles = [integer()]
VertexPos = binary()
Triangulates a polygon π β and the polygon is specified by a Normal plus Vs, a list of vertex positions.
The function returns a list of indices of the vertices and a binary (64bit native float) containing an array of vertex positions. It starts with the vertices in Vs and may contain newly created vertices in the end π β so like, your input comes first, and then the algorithm slides in extra vertices at the tail. Noted.
π unProject/6 & unProject4/9
unProject(WinX, WinY, WinZ, Model, Proj, View) ->
{i(), ObjX :: f(), ObjY :: f(), ObjZ :: f()}
unProject4(WinX, WinY, WinZ, ClipW, Model, Proj, View, NearVal,
FarVal) ->
{i(),
ObjX :: f(),
ObjY :: f(),
ObjZ :: f(),
ObjW :: f()}
Types:
WinX = WinY = WinZ = ClipW = f()
Model = Proj = matrix()
View = {i(), i(), i(), i()}
NearVal = FarVal = f()
glu:unProject/6 maps the specified window coordinates into object coordinates using Model, Proj, and View. The result lands in ObjX, ObjY, and ObjZ. π«
Heads up bestie β check that return value! A return value of?GLU_TRUEindicates success; a return value of?GLU_FALSEindicates failure. So like, do not skip the vibe check on this one π
π External documentation.
and that's the whole page, bestie β every flag, every type, every return value accounted for, no crumbs left behind π«Ά
shoutout to Ericsson AB for this iconic wx 2.2.2.1 drop, and this is the glu(3erl) manual page, signed, sealed, slayed π β¨π
π¦ where this page comes from
- ubuntu noble: erlang-manpages 1:25.3.2.8+dfsg-1ubuntu4 Β· Apache-2.0
- ubuntu noble: erlang-manpages 1:25.3.2.8+dfsg-1ubuntu4.8 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms