查看源代码 glu (wx v2.4.3)

OpenGL 的 Erlang 封装函数

标准 OpenGL API

本文档提供了完整OpenGL 参考页面的简要版本。

概述

函数

glu:build1DMipmapLevels/9 构建一个递减分辨率的预过滤一维纹理图子集,称为 mipmap。这用于纹理映射图元的抗锯齿。

glu:build1DMipmaps/6 构建一系列递减分辨率的预过滤一维纹理图,称为 mipmap。这用于纹理映射图元的抗锯齿。

glu:build2DMipmapLevels/10 构建一个递减分辨率的预过滤二维纹理图子集,称为 mipmap。这用于纹理映射图元的抗锯齿。

glu:build2DMipmaps/7 构建一系列递减分辨率的预过滤二维纹理图,称为 mipmap。这用于纹理映射图元的抗锯齿。

glu:build3DMipmapLevels/11 构建一个递减分辨率的预过滤三维纹理图子集,称为 mipmap。这用于纹理映射图元的抗锯齿。

glu:build3DMipmaps/8 构建一系列递减分辨率的预过滤三维纹理图,称为 mipmap。这用于纹理映射图元的抗锯齿。

glu:checkExtension/2 如果支持 ExtName,则返回 ?GLU_TRUE,否则返回 ?GLU_FALSE

glu:cylinder/6 绘制一个沿 z 轴方向的圆柱体。圆柱体的底部位于 z = 0,顶部位于 z=height。与球体类似,圆柱体围绕 z 轴细分为切片,并沿 z 轴细分为堆栈。

glu:deleteQuadric/1 销毁二次曲面对象(使用 glu:newQuadric/0 创建)并释放其使用的任何内存。调用 glu:deleteQuadric/1 后,不能再次使用 Quad

glu:disk/5z = 0 平面上渲染一个圆盘。圆盘的半径为 Outer,并包含一个半径为 Inner 的同心圆孔。如果 Inner 为 0,则不生成孔。圆盘围绕 z 轴细分为切片(如披萨切片),并围绕 z 轴细分为环(分别由 SlicesLoops 指定)。

glu:errorString/1 从 GL 或 GLU 错误代码生成错误字符串。该字符串为 ISO Latin 1 格式。例如,glu:errorString/1(?GLU_OUT_OF_MEMORY) 返回字符串 out of memory

glu:getString/1 返回一个指向描述 GLU 版本或支持的 GLU 扩展的静态字符串的指针。

glu:lookAt/9 创建一个从眼睛点、指示场景中心的参考点和 UP 向量导出的视图矩阵。

glu:newQuadric/0 创建并返回一个指向新的二次曲面对象的指针。在调用二次曲面渲染和控制函数时,必须引用此对象。返回值为 0 表示没有足够的内存来分配对象。

glu:ortho2D/4 设置二维正交视图区域。这等效于调用 gl:ortho/6,其中 near=-1 和 far=1。

glu:partialDisk/7 在 z=0 平面上渲染一个部分圆盘。部分圆盘类似于完整圆盘,只是只包含从 StartStart + Sweep 的圆盘子集(其中 0 度沿 +f2yf 轴,90 度沿 +x 轴,180 度沿 -y 轴,270 度沿 -x 轴)。

glu:perspective/4 指定进入世界坐标系的视锥体。通常,glu:perspective/4 中的纵横比应与关联的视口的纵横比匹配。例如,aspect=2.0 表示查看者的视角在 x 中是 y 中的两倍宽。如果视口的宽度是高度的两倍,它将显示没有失真的图像。

glu:pickMatrix/5 创建一个投影矩阵,该矩阵可用于将绘制限制为视口的一小部分区域。这通常用于确定光标附近正在绘制哪些对象。使用 glu:pickMatrix/5 将绘制限制为光标周围的一小部分区域。然后,进入选择模式(使用 gl:renderMode/1)并重新渲染场景。所有本来会在光标附近绘制的图元都会被识别并存储在选择缓冲区中。

glu:project/6 使用 ModelProjView 将指定的对象坐标转换为窗口坐标。结果存储在 WinXWinYWinZ 中。返回值为 ?GLU_TRUE 表示成功,返回值为 ?GLU_FALSE 表示失败。

glu:quadricDrawStyle/2 指定使用 Quad 渲染的二次曲面的绘制样式。合法值如下:

glu:quadricNormals/2 指定使用 Quad 渲染的二次曲面所需的法线类型。合法值如下:

glu:quadricOrientation/2 指定使用 Quad 渲染的二次曲面所需的朝向类型。Orientation 的值如下:

glu:quadricTexture/2 指定是否应为使用 Quad 渲染的二次曲面生成纹理坐标。如果 Texture 的值为 ?GLU_TRUE,则生成纹理坐标,如果 Texture 的值为 ?GLU_FALSE,则不生成纹理坐标。初始值为 ?GLU_FALSE

glu:scaleImage/9 使用适当的像素存储模式缩放像素图像,以将数据从源图像解包并打包到目标图像中。

glu:sphere/4 绘制一个以原点为中心的给定半径的球体。球体围绕 z 轴细分为切片,并沿 z 轴细分为堆栈(类似于经度和纬度线)。

对多边形进行三角剖分,该多边形由 NormalVs(顶点位置列表)指定。

glu:unProject/6 使用 ModelProjView 将指定的窗口坐标映射到对象坐标。结果存储在 ObjXObjYObjZ 中。返回值为 ?GLU_TRUE 表示成功;返回值为 ?GLU_FALSE 表示失败。

类型

-type enum() :: non_neg_integer().
-type f() :: float().
-type i() :: integer().
-type m12() :: {f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}.
-type m16() :: {f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f(), f()}.
链接到此类型

matrix()

查看源代码 (未导出)
-type matrix() :: m12() | m16().
-type mem() :: binary() | tuple().
链接到此类型

vertex()

查看源代码 (未导出)
-type vertex() :: {float(), float(), float()}.

函数

链接到此函数

build1DMipmapLevels(Target, InternalFormat, Width, Format, Type, Level, Base, Max, Data)

查看源代码
-spec 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 构建一个递减分辨率的预过滤一维纹理图子集,称为 mipmap。这用于纹理映射图元的抗锯齿。

外部文档。

链接到此函数

build1DMipmaps(Target, InternalFormat, Width, Format, Type, Data)

查看源代码
-spec build1DMipmaps(Target, InternalFormat, Width, Format, Type, Data) -> i()
                        when
                            Target :: enum(),
                            InternalFormat :: i(),
                            Width :: i(),
                            Format :: enum(),
                            Type :: enum(),
                            Data :: binary().

glu:build1DMipmaps/6 构建一系列递减分辨率的预过滤一维纹理图,称为 mipmap。这用于纹理映射图元的抗锯齿。

外部文档。

链接到此函数

build2DMipmapLevels(Target, InternalFormat, Width, Height, Format, Type, Level, Base, Max, Data)

查看源代码
-spec 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 构建一个递减分辨率的预过滤二维纹理图子集,称为 mipmap。这用于纹理映射图元的抗锯齿。

外部文档。

链接到此函数

build2DMipmaps(Target, InternalFormat, Width, Height, Format, Type, Data)

查看源代码
-spec 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 构建一系列递减分辨率的预过滤二维纹理图,称为 mipmap。这用于纹理映射图元的抗锯齿。

外部文档。

链接到此函数

build3DMipmapLevels(Target, InternalFormat, Width, Height, Depth, Format, Type, Level, Base, Max, Data)

查看源代码
-spec 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 构建一个递减分辨率的预过滤三维纹理图子集,称为 mipmap。这用于纹理映射图元的抗锯齿。

外部文档。

链接到此函数

build3DMipmaps(Target, InternalFormat, Width, Height, Depth, Format, Type, Data)

查看源代码
-spec 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 构建一系列递减分辨率的预过滤三维纹理图,称为 mipmap。这用于纹理映射图元的抗锯齿。

外部文档。

链接到此函数

checkExtension(ExtName, ExtString)

查看源代码
-spec checkExtension(ExtName :: string(), ExtString :: string()) -> 0 | 1.

glu:checkExtension/2 如果支持 ExtName,则返回 ?GLU_TRUE,否则返回 ?GLU_FALSE

外部文档。

链接到此函数

cylinder(Quad, Base, Top, Height, Slices, Stacks)

查看源代码
-spec cylinder(Quad :: i(), Base :: f(), Top :: f(), Height :: f(), Slices :: i(), Stacks :: i()) -> ok.

glu:cylinder/6 绘制一个沿 z 轴方向的圆柱体。圆柱体的底部位于 z = 0,顶部位于 z=height。与球体类似,圆柱体围绕 z 轴细分为切片,并沿 z 轴细分为堆栈。

外部文档。

-spec deleteQuadric(Quad :: i()) -> ok.

glu:deleteQuadric/1 销毁二次曲面对象(使用 glu:newQuadric/0 创建)并释放其使用的任何内存。调用 glu:deleteQuadric/1 后,不能再次使用 Quad

外部文档。

链接到此函数

disk(Quad, Inner, Outer, Slices, Loops)

查看源代码
-spec disk(Quad :: i(), Inner :: f(), Outer :: f(), Slices :: i(), Loops :: i()) -> ok.

glu:disk/5z = 0 平面上渲染一个圆盘。圆盘的半径为 Outer,并包含一个半径为 Inner 的同心圆孔。如果 Inner 为 0,则不生成孔。圆盘围绕 z 轴细分为切片(如披萨切片),并围绕 z 轴细分为环(分别由 SlicesLoops 指定)。

外部文档。

-spec errorString(Error :: enum()) -> string().

glu:errorString/1 从 GL 或 GLU 错误代码生成错误字符串。该字符串为 ISO Latin 1 格式。例如,glu:errorString/1(?GLU_OUT_OF_MEMORY) 返回字符串 out of memory

外部文档。

-spec getString(Name :: enum()) -> string().

glu:getString/1 返回一个指向描述 GLU 版本或支持的 GLU 扩展的静态字符串的指针。

外部文档。

链接到此函数

lookAt(EyeX, EyeY, EyeZ, CenterX, CenterY, CenterZ, UpX, UpY, UpZ)

查看源代码
-spec 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 创建一个从眼睛点、指示场景中心的参考点和 UP 向量导出的视图矩阵。

外部文档。

-spec newQuadric() -> i().

glu:newQuadric/0 创建并返回一个指向新的二次曲面对象的指针。在调用二次曲面渲染和控制函数时,必须引用此对象。返回值为 0 表示没有足够的内存来分配对象。

外部文档。

链接到此函数

ortho2D(Left, Right, Bottom, Top)

查看源代码
-spec ortho2D(Left :: f(), Right :: f(), Bottom :: f(), Top :: f()) -> ok.

glu:ortho2D/4 设置二维正交视图区域。这等效于调用 gl:ortho/6,其中 near=-1 和 far=1。

外部文档。

链接到此函数

partialDisk(Quad, Inner, Outer, Slices, Loops, Start, Sweep)

查看源代码
-spec 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 在 z=0 平面上渲染一个部分圆盘。部分圆盘类似于完整圆盘,只是只包含从 StartStart + Sweep 的圆盘子集(其中 0 度沿 +f2yf 轴,90 度沿 +x 轴,180 度沿 -y 轴,270 度沿 -x 轴)。

外部文档。

链接到此函数

perspective(Fovy, Aspect, ZNear, ZFar)

查看源代码
-spec perspective(Fovy :: f(), Aspect :: f(), ZNear :: f(), ZFar :: f()) -> ok.

glu:perspective/4 指定进入世界坐标系的视锥体。通常,glu:perspective/4 中的纵横比应与关联的视口的纵横比匹配。例如,aspect=2.0 表示查看者的视角在 x 中是 y 中的两倍宽。如果视口的宽度是高度的两倍,它将显示没有失真的图像。

外部文档。

链接到此函数

pickMatrix(X, Y, DelX, DelY, Viewport)

查看源代码
-spec pickMatrix(X :: f(), Y :: f(), DelX :: f(), DelY :: f(), Viewport :: {i(), i(), i(), i()}) -> ok.

glu:pickMatrix/5 创建一个投影矩阵,该矩阵可用于将绘制限制为视口的一小部分区域。这通常用于确定光标附近正在绘制哪些对象。使用 glu:pickMatrix/5 将绘制限制为光标周围的一小部分区域。然后,进入选择模式(使用 gl:renderMode/1)并重新渲染场景。所有本来会在光标附近绘制的图元都会被识别并存储在选择缓冲区中。

外部文档。

链接到此函数

project(ObjX, ObjY, ObjZ, Model, Proj, View)

查看源代码
-spec 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 使用 ModelProjView 将指定的对象坐标转换为窗口坐标。结果存储在 WinXWinYWinZ 中。返回值为 ?GLU_TRUE 表示成功,返回值为 ?GLU_FALSE 表示失败。

外部文档。

链接到此函数

quadricDrawStyle(Quad, Draw)

查看源代码
-spec quadricDrawStyle(Quad :: i(), Draw :: enum()) -> ok.

glu:quadricDrawStyle/2 指定使用 Quad 渲染的二次曲面的绘制样式。合法值如下:

外部文档。

链接到此函数

quadricNormals(Quad, Normal)

查看源代码
-spec quadricNormals(Quad :: i(), Normal :: enum()) -> ok.

glu:quadricNormals/2 指定使用 Quad 渲染的二次曲面所需的法线类型。合法值如下:

外部文档。

链接到此函数

quadricOrientation(Quad, Orientation)

查看源代码
-spec quadricOrientation(Quad :: i(), Orientation :: enum()) -> ok.

glu:quadricOrientation/2 指定使用 Quad 渲染的二次曲面所需的朝向类型。Orientation 的值如下:

外部文档。

链接到此函数

quadricTexture(Quad, Texture)

查看源代码
-spec quadricTexture(Quad :: i(), Texture :: 0 | 1) -> ok.

glu:quadricTexture/2 指定是否应为使用 Quad 渲染的二次曲面生成纹理坐标。如果 Texture 的值为 ?GLU_TRUE,则生成纹理坐标,如果 Texture 的值为 ?GLU_FALSE,则不生成纹理坐标。初始值为 ?GLU_FALSE

外部文档。

链接到此函数

scaleImage(Format, WIn, HIn, TypeIn, DataIn, WOut, HOut, TypeOut, DataOut)

查看源代码
-spec 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 使用适当的像素存储模式缩放像素图像,以将数据从源图像解包并打包到目标图像中。

外部文档。

链接到此函数

sphere(Quad, Radius, Slices, Stacks)

查看源代码
-spec sphere(Quad :: i(), Radius :: f(), Slices :: i(), Stacks :: i()) -> ok.

glu:sphere/4 绘制一个以原点为中心的给定半径的球体。球体围绕 z 轴细分为切片,并沿 z 轴细分为堆栈(类似于经度和纬度线)。

外部文档。

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

对多边形进行三角剖分,该多边形由 NormalVs(顶点位置列表)指定。

该函数返回顶点索引列表和一个包含顶点位置数组的二进制文件(64 位本机浮点数)。它从 Vs 中的顶点开始,并可能在末尾包含新创建的顶点。

链接到此函数

unProject4(WinX, WinY, WinZ, ClipW, Model, Proj, View, NearVal, FarVal)

查看源代码
-spec 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 使用 ModelProjView 将指定的窗口坐标映射到对象坐标。结果存储在 ObjXObjYObjZ 中。返回值为 ?GLU_TRUE 表示成功;返回值为 ?GLU_FALSE 表示失败。

外部文档。

链接到此函数

unProject(WinX, WinY, WinZ, Model, Proj, View)

查看源代码
-spec unProject(WinX, WinY, WinZ, Model, Proj, View) -> {i(), ObjX :: f(), ObjY :: f(), ObjZ :: f()}
                   when
                       WinX :: f(),
                       WinY :: f(),
                       WinZ :: f(),
                       Model :: matrix(),
                       Proj :: matrix(),
                       View :: {i(), i(), i(), i()}.

等效于 unProject4/9