glu(3)

πŸ“¦
version 29.0.6 Β· 3 versions
, in ubuntu stonking

πŸ’– glu β€” bestie edition πŸ’–

okay so this is the <pink>glu</pink> page from the Erlang Module Definition manual, and honestly? it's giving OpenGL but make it Erlang. sit down, grab a boba, we're doing this together πŸ§‹βœ¨


✨ NAME ✨

glu β€” Erlang wrapper functions for OpenGL πŸŽ€


🌸 DESCRIPTION 🌸

Standard OpenGL API, fr fr.

This documents the functions as a brief version of the complete OpenGL reference pages. no cap, it's the quick-and-cute version, not the whole encyclopedia πŸ’…


πŸ¦‹ DATA TYPES πŸ¦‹

here's the whole type situation, keep up bestie:

  • enum() :: non_neg_integer().
  • f() :: float().
  • i() :: integer().
  • 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()}.
  • matrix() :: m12() | m16().
  • mem() :: binary() | tuple().
  • vertex() :: {float(), float(), float()}.

that's the whole vibe check on types, periodt πŸ‘‘


πŸ”₯ FUNCTIONS πŸ”₯

build1DMipmapLevels/9

build1DMipmapLevels(Target, InternalFormat, Width, Format, Type,
                          Level, Base, Max, Data) ->
                             i()
                             when
                                 Target :: enum(),
                                 InternalFormat :: i(),
                                 Width :: i(),
                                 Format :: enum(),
                                 Type :: enum(),
                                 Level :: i(),
                                 Base :: i(),
                                 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. iconic behavior honestly πŸ’–

External documentation.

build1DMipmaps/6

build1DMipmaps(Target, InternalFormat, Width, Format, Type, Data) ->
                        i()
                        when
                            Target :: enum(),
                            InternalFormat :: i(),
                            Width :: i(),
                            Format :: enum(),
                            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. same energy, one fewer arg, she's efficient ✨

External documentation.

build2DMipmapLevels/10

build2DMipmapLevels(Target, InternalFormat, Width, Height, Format,
                          Type, Level, Base, Max, Data) ->
                             i()
                             when
                                 Target :: enum(),
                                 InternalFormat :: i(),
                                 Width :: i(),
                                 Height :: i(),
                                 Format :: enum(),
                                 Type :: enum(),
                                 Level :: i(),
                                 Base :: i(),
                                 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. two D, ten args, main character energy 🌈

External documentation.

build2DMipmaps/7

build2DMipmaps(Target, InternalFormat, Width, Height, Format,
                     Type, Data) ->
                        i()
                        when
                            Target :: enum(),
                            InternalFormat :: i(),
                            Width :: i(),
                            Height :: i(),
                            Format :: enum(),
                            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()
                             when
                                 Target :: enum(),
                                 InternalFormat :: i(),
                                 Width :: i(),
                                 Height :: i(),
                                 Depth :: i(),
                                 Format :: enum(),
                                 Type :: enum(),
                                 Level :: i(),
                                 Base :: i(),
                                 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. bestie she's got DEPTH πŸ˜­πŸ’œ

External documentation.

build3DMipmaps/8

build3DMipmaps(Target, InternalFormat, Width, Height, Depth,
                     Format, Type, Data) ->
                        i()
                        when
                            Target :: enum(),
                            InternalFormat :: i(),
                            Width :: i(),
                            Height :: i(),
                            Depth :: i(),
                            Format :: enum(),
                            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. it's literally a yes/no girlie, we love a binary decision πŸŽ€

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. shape slay πŸ’…

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. Once glu:deleteQuadric/1 has been called, Quad cannot be used again. she's gone, she's not coming back, do NOT try to hit her up again 🫢

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).

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. it reads you for filth, but politely πŸ’€

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. she's just here to tell you about herself, valid πŸ’–

External documentation.

lookAt/9

lookAt(EyeX, EyeY, EyeZ, CenterX, CenterY, CenterZ, UpX, UpY, UpZ) ->
                ok
                when
                    EyeX :: f(),
                    EyeY :: f(),
                    EyeZ :: f(),
                    CenterX :: f(),
                    CenterY :: f(),
                    CenterZ :: f(),
                    UpX :: f(),
                    UpY :: f(),
                    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. literally the "where am i looking and which way is up" function, we stan a self-aware queen πŸ‘‘

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. so if you get a 0, that's your sign to close 400 browser tabs 😭

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. shortcut queen ✨

External documentation.

partialDisk/7

partialDisk(Quad, Inner, Outer, Slices, Loops, Start, Sweep) -> ok
                     when
                         Quad :: i(),
                         Inner :: f(),
                         Outer :: f(),
                         Slices :: i(),
                         Loops :: i(),
                         Start :: f(),
                         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). it's giving "pizza with one slice already taken" πŸ•πŸ¦‹

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. match your ratios bestie, nobody wants a stretched face πŸ™ˆ

External documentation.


okay that's not even the whole thing yet, there's MORE coming β€” don't go anywhere πŸ’–

pickMatrix/5 β€” cursor glow-up πŸ’–

pickMatrix(X :: f(),
           Y :: f(),
           DelX :: f(),
           DelY :: f(),
           Viewport :: {i(), i(), i(), i()}) ->
              ok.

okay so 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 β€” object coords to window coords, slay ✨

project(ObjX, ObjY, ObjZ, Model, Proj, View) ->
                 {i(), WinX :: f(), WinY :: f(), WinZ :: f()}
                 when
                     ObjX :: f(),
                     ObjY :: f(),
                     ObjZ :: f(),
                     Model :: matrix(),
                     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 β€” draw style check πŸŽ€

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 β€” normals, no cap πŸ’…

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 β€” orientation vibe check πŸ‘‘

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 β€” texture coords, yes or no? πŸ¦‹

quadricTexture(Quad :: i(), Texture :: 0 | 1) -> ok.

glu:quadricTexture/2 specifies if texture coordinates should be generated for quadrics rendered with Quad. If the value of Texture is ?GLU_TRUE, then texture coordinates are generated, and if Texture is ?GLU_FALSE, they are not. The initial value is ?GLU_FALSE.

External documentation. πŸ“


scaleImage/9 β€” pixel glow-up ✨

scaleImage(Format, WIn, HIn, TypeIn, DataIn, WOut, HOut, TypeOut,
                 DataOut) ->
                    i()
                    when
                        Format :: enum(),
                        WIn :: i(),
                        HIn :: i(),
                        TypeIn :: enum(),
                        DataIn :: binary(),
                        WOut :: i(),
                        HOut :: i(),
                        TypeOut :: enum(),
                        DataOut :: mem().

glu:scaleImage/9 scales a pixel image using the appropriate pixel store modes to unpack data from the source image and pack data into the destination image.

External documentation. πŸ’–


sphere/4 β€” literally a sphere, periodt πŸ‘‘

sphere(Quad :: i(), Radius :: f(), Slices :: i(), Stacks :: i()) ->
                ok.

glu:sphere/4 draws a sphere of the given radius centered around the origin. The sphere is subdivided around the z axis into slices and along the z axis into stacks (similar to lines of longitude and latitude).

External documentation. πŸ”₯


tesselate β€” triangulate that polygon πŸ”Ί

tesselate(Normal, [Vs]) -> {Triangles, VertexPos}
                   when
                       Normal :: vertex(),
                       Vs :: vertex(),
                       Triangles :: [integer()],
                       VertexPos :: binary().

Triangulates a polygon, the polygon is specified by a Normal and 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.


unProject4 β€” window coords back to object coords, reverse slay πŸ’–

unProject4(WinX, WinY, WinZ, ClipW, Model, Proj, View, NearVal,
                 FarVal) ->
                    {i(),
                     ObjX :: f(),
                     ObjY :: f(),
                     ObjZ :: f(),
                     ObjW :: f()}
                    when
                        WinX :: f(),
                        WinY :: f(),
                        WinZ :: f(),
                        ClipW :: f(),
                        Model :: matrix(),
                        Proj :: matrix(),
                        View :: {i(), i(), i(), i()},
                        NearVal :: f(),
                        FarVal :: f().

glu:unProject/6 maps the specified window coordinates into object coordinates using Model, Proj, and View. The result is stored in ObjX, ObjY, and ObjZ. A return value of ?GLU_TRUE indicates success; a return value of ?GLU_FALSE indicates failure.

External documentation. 🌸


okay bestie, that's the whole glu(3) page. the footer says Ericsson AB, version wx 2.6, page glu(3) β€” no date, but the vibe is eternal. periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from