mirror of
https://github.com/Ryujinx/Opentk.git
synced 2025-06-03 16:28:33 +00:00
48403 lines
2.9 MiB
48403 lines
2.9 MiB
#region License
|
||
/*
|
||
MIT License
|
||
Copyright ©2003-2006 Tao Framework Team
|
||
http://www.taoframework.com
|
||
All rights reserved.
|
||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
of this software and associated documentation files (the "Software"), to deal
|
||
in the Software without restriction, including without limitation the rights
|
||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
copies of the Software, and to permit persons to whom the Software is
|
||
furnished to do so, subject to the following conditions:
|
||
|
||
The above copyright notice and this permission notice shall be included in all
|
||
copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||
SOFTWARE.
|
||
*/
|
||
#endregion License
|
||
|
||
using System;
|
||
using System.Runtime.InteropServices;
|
||
using System.Security;
|
||
|
||
#pragma warning disable 169 // private field is never used
|
||
|
||
namespace Tao.OpenGl
|
||
{
|
||
#region Class Documentation
|
||
/// <summary>
|
||
/// GLU (OpenGL Utility) binding for .NET, implementing GLU 1.3.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Binds functions and definitions in glu32.dll or libGLU.so.
|
||
/// </para>
|
||
/// <para>
|
||
/// The OpenGL Utility (GLU) library contains several groups of functions that
|
||
/// complement the core OpenGL interface by providing support for auxiliary features.
|
||
/// These features include: mipmapping, matrix manipulation, polygon tessellation,
|
||
/// quadrics, NURBS, and error handling.
|
||
/// </para>
|
||
/// <para>
|
||
/// Mipmapping routines include image scaling and automatic mipmap generation. A
|
||
/// variety of matrix manipulation functions build projection and viewing matrices,
|
||
/// or project vertices from one coordinate system to another. Polygon tessellation
|
||
/// routines convert concave polygons into triangles for easy rendering. Quadrics
|
||
/// support renders a few basic quadrics such as spheres and cones. NURBS code maps
|
||
/// complicated NURBS curves and trimmed surfaces into simpler OpenGL evaluators.
|
||
/// Lastly, an error lookup routine translates OpenGL and GLU error codes into
|
||
/// strings. GLU library routines may call OpenGL library routines. Thus, an OpenGL
|
||
/// context should be made current before calling any GLU functions. Otherwise an
|
||
/// OpenGL error may occur.
|
||
/// </para>
|
||
/// <para>
|
||
/// These utility functions make use of core OpenGL functions, so any OpenGL
|
||
/// implementation is guaranteed to support the utility functions.
|
||
/// </para>
|
||
/// </remarks>
|
||
#endregion Class Documentation
|
||
[Obsolete]
|
||
public static class Glu
|
||
{
|
||
// --- Fields ---
|
||
#region Private Constants
|
||
#region CallingConvention CALLING_CONVENTION
|
||
/// <summary>
|
||
/// Specifies the calling convention.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// Specifies <see cref="CallingConvention.Winapi" /> for Windows and
|
||
/// Linux, to indicate that the default should be used.
|
||
/// </remarks>
|
||
private const CallingConvention CALLING_CONVENTION = CallingConvention.Winapi;
|
||
#endregion CallingConvention CALLING_CONVENTION
|
||
#endregion Private Constants
|
||
|
||
#region Public Constants
|
||
#region Version
|
||
#region bool GLU_VERSION_1_1
|
||
/// <summary>
|
||
/// GLU API revision.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// Specifies GLU 1.1.
|
||
/// </remarks>
|
||
// #define GLU_VERSION_1_1 1
|
||
public const bool GLU_VERSION_1_1 = true;
|
||
#endregion bool GLU_VERSION_1_1
|
||
|
||
#region bool GLU_VERSION_1_2
|
||
/// <summary>
|
||
/// GLU API revision.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// Specifies GLU 1.2.
|
||
/// </remarks>
|
||
// #define GLU_VERSION_1_2 1
|
||
public const bool GLU_VERSION_1_2 = true;
|
||
#endregion bool GLU_VERSION_1_2
|
||
|
||
#region bool GLU_VERSION_1_3
|
||
/// <summary>
|
||
/// GLU API revision.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// Specifies GLU 1.3.
|
||
/// </remarks>
|
||
// #define GLU_VERSION_1_3 1
|
||
public const bool GLU_VERSION_1_3 = true;
|
||
#endregion bool GLU_VERSION_1_3
|
||
#endregion Version
|
||
|
||
#region Errors
|
||
#region int GLU_INVALID_ENUM
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_INVALID_ENUM 100900
|
||
public const int GLU_INVALID_ENUM = 100900;
|
||
#endregion int GLU_INVALID_ENUM
|
||
|
||
#region int GLU_INVALID_VALUE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_INVALID_VALUE 100901
|
||
public const int GLU_INVALID_VALUE = 100901;
|
||
#endregion int GLU_INVALID_VALUE
|
||
|
||
#region int GLU_OUT_OF_MEMORY
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_OUT_OF_MEMORY 100902
|
||
public const int GLU_OUT_OF_MEMORY = 100902;
|
||
#endregion int GLU_OUT_OF_MEMORY
|
||
|
||
#region int GLU_INCOMPATIBLE_GL_VERSION
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_INCOMPATIBLE_GL_VERSION 100903
|
||
public const int GLU_INCOMPATIBLE_GL_VERSION = 100903;
|
||
#endregion int GLU_INCOMPATIBLE_GL_VERSION
|
||
|
||
#region int GLU_INVALID_OPERATION
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_INVALID_OPERATION 100904
|
||
public const int GLU_INVALID_OPERATION = 100904;
|
||
#endregion int GLU_INVALID_OPERATION
|
||
#endregion Errors
|
||
|
||
#region StringName
|
||
#region int GLU_VERSION
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_VERSION 100800
|
||
public const int GLU_VERSION = 100800;
|
||
#endregion int GLU_VERSION
|
||
|
||
#region int GLU_EXTENSIONS
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_EXTENSIONS 100801
|
||
public const int GLU_EXTENSIONS = 100801;
|
||
#endregion int GLU_EXTENSIONS
|
||
#endregion StringName
|
||
|
||
#region bool
|
||
#region int GLU_TRUE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TRUE GL_TRUE
|
||
public const int GLU_TRUE = 1;
|
||
#endregion int GLU_TRUE
|
||
|
||
#region int GLU_FALSE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_FALSE GL_FALSE
|
||
public const int GLU_FALSE = 0;
|
||
#endregion int GLU_FALSE
|
||
#endregion bool
|
||
|
||
#region QuadricNormal
|
||
#region int GLU_SMOOTH
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_SMOOTH 100000
|
||
public const int GLU_SMOOTH = 100000;
|
||
#endregion int GLU_SMOOTH
|
||
|
||
#region int GLU_FLAT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_FLAT 100001
|
||
public const int GLU_FLAT = 100001;
|
||
#endregion int GLU_FLAT
|
||
|
||
#region int GLU_NONE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NONE 100002
|
||
public const int GLU_NONE = 100002;
|
||
#endregion int GLU_NONE
|
||
#endregion QuadricNormal
|
||
|
||
#region QuadricDrawStyle
|
||
#region int GLU_POINT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_POINT 100010
|
||
public const int GLU_POINT = 100010;
|
||
#endregion int GLU_POINT
|
||
|
||
#region int GLU_LINE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_LINE 100011
|
||
public const int GLU_LINE = 100011;
|
||
#endregion int GLU_LINE
|
||
|
||
#region int GLU_FILL
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_FILL 100012
|
||
public const int GLU_FILL = 100012;
|
||
#endregion int GLU_FILL
|
||
|
||
#region int GLU_SILHOUETTE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_SILHOUETTE 100013
|
||
public const int GLU_SILHOUETTE = 100013;
|
||
#endregion int GLU_SILHOUETTE
|
||
#endregion QuadricDrawStyle
|
||
|
||
#region QuadraticOrientation
|
||
#region int GLU_OUTSIDE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_OUTSIDE 100020
|
||
public const int GLU_OUTSIDE = 100020;
|
||
#endregion int GLU_OUTSIDE
|
||
|
||
#region int GLU_INSIDE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_INSIDE 100021
|
||
public const int GLU_INSIDE = 100021;
|
||
#endregion int GLU_INSIDE
|
||
#endregion QuadraticOrientation
|
||
|
||
#region Tesselation Limits
|
||
#region double GLU_TESS_MAX_COORD
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_MAX_COORD 1.0e150
|
||
public const double GLU_TESS_MAX_COORD = 1.0e150;
|
||
#endregion double GLU_TESS_MAX_COORD
|
||
#endregion Tesselation Limits
|
||
|
||
#region TessProperty
|
||
#region int GLU_TESS_WINDING_RULE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_WINDING_RULE 100140
|
||
public const int GLU_TESS_WINDING_RULE = 100140;
|
||
#endregion int GLU_TESS_WINDING_RULE
|
||
|
||
#region int GLU_TESS_BOUNDARY_ONLY
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_BOUNDARY_ONLY 100141
|
||
public const int GLU_TESS_BOUNDARY_ONLY = 100141;
|
||
#endregion int GLU_TESS_BOUNDARY_ONLY
|
||
|
||
#region int GLU_TESS_TOLERANCE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_TOLERANCE 100142
|
||
public const int GLU_TESS_TOLERANCE = 100142;
|
||
#endregion int GLU_TESS_TOLERANCE
|
||
#endregion TessProperty
|
||
|
||
#region TessWinding
|
||
#region int GLU_TESS_WINDING_ODD
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_WINDING_ODD 100130
|
||
public const int GLU_TESS_WINDING_ODD = 100130;
|
||
#endregion int GLU_TESS_WINDING_ODD
|
||
|
||
#region int GLU_TESS_WINDING_NONZERO
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_WINDING_NONZERO 100131
|
||
public const int GLU_TESS_WINDING_NONZERO = 100131;
|
||
#endregion int GLU_TESS_WINDING_NONZERO
|
||
|
||
#region int GLU_TESS_WINDING_POSITIVE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_WINDING_POSITIVE 100132
|
||
public const int GLU_TESS_WINDING_POSITIVE = 100132;
|
||
#endregion int GLU_TESS_WINDING_POSITIVE
|
||
|
||
#region int GLU_TESS_WINDING_NEGATIVE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_WINDING_NEGATIVE 100133
|
||
public const int GLU_TESS_WINDING_NEGATIVE = 100133;
|
||
#endregion int GLU_TESS_WINDING_NEGATIVE
|
||
|
||
#region int GLU_TESS_WINDING_ABS_GEQ_TWO
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
|
||
public const int GLU_TESS_WINDING_ABS_GEQ_TWO = 100134;
|
||
#endregion int GLU_TESS_WINDING_ABS_GEQ_TWO
|
||
#endregion TessWinding
|
||
|
||
#region TessCallback
|
||
#region int GLU_TESS_BEGIN
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_BEGIN 100100
|
||
public const int GLU_TESS_BEGIN = 100100;
|
||
#endregion int GLU_TESS_BEGIN
|
||
|
||
#region int GLU_BEGIN
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_BEGIN 100100
|
||
public const int GLU_BEGIN = 100100;
|
||
#endregion int GLU_BEGIN
|
||
|
||
#region int GLU_TESS_VERTEX
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_VERTEX 100101
|
||
public const int GLU_TESS_VERTEX = 100101;
|
||
#endregion int GLU_TESS_VERTEX
|
||
|
||
#region int GLU_VERTEX
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_VERTEX 100101
|
||
public const int GLU_VERTEX = 100101;
|
||
#endregion int GLU_VERTEX
|
||
|
||
#region int GLU_TESS_END
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_END 100102
|
||
public const int GLU_TESS_END = 100102;
|
||
#endregion int GLU_TESS_END
|
||
|
||
#region int GLU_END
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_END 100102
|
||
public const int GLU_END = 100102;
|
||
#endregion int GLU_END
|
||
|
||
#region int GLU_TESS_ERROR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR 100103
|
||
public const int GLU_TESS_ERROR = 100103;
|
||
#endregion int GLU_TESS_ERROR
|
||
|
||
#region int GLU_TESS_EDGE_FLAG
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_EDGE_FLAG 100104
|
||
public const int GLU_TESS_EDGE_FLAG = 100104;
|
||
#endregion int GLU_TESS_EDGE_FLAG
|
||
|
||
#region int GLU_EDGE_FLAG
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_EDGE_FLAG 100104
|
||
public const int GLU_EDGE_FLAG = 100104;
|
||
#endregion int GLU_EDGE_FLAG
|
||
|
||
#region int GLU_TESS_COMBINE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_COMBINE 100105
|
||
public const int GLU_TESS_COMBINE = 100105;
|
||
#endregion int GLU_TESS_COMBINE
|
||
|
||
#region int GLU_TESS_BEGIN_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_BEGIN_DATA 100106
|
||
public const int GLU_TESS_BEGIN_DATA = 100106;
|
||
#endregion int GLU_TESS_BEGIN_DATA
|
||
|
||
#region int GLU_TESS_VERTEX_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_VERTEX_DATA 100107
|
||
public const int GLU_TESS_VERTEX_DATA = 100107;
|
||
#endregion int GLU_TESS_VERTEX_DATA
|
||
|
||
#region int GLU_TESS_END_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_END_DATA 100108
|
||
public const int GLU_TESS_END_DATA = 100108;
|
||
#endregion int GLU_TESS_END_DATA
|
||
|
||
#region int GLU_TESS_ERROR_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR_DATA 100109
|
||
public const int GLU_TESS_ERROR_DATA = 100109;
|
||
#endregion int GLU_TESS_ERROR_DATA
|
||
|
||
#region int GLU_TESS_EDGE_FLAG_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_EDGE_FLAG_DATA 100110
|
||
public const int GLU_TESS_EDGE_FLAG_DATA = 100110;
|
||
#endregion int GLU_TESS_EDGE_FLAG_DATA
|
||
|
||
#region int GLU_TESS_COMBINE_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_COMBINE_DATA 100111
|
||
public const int GLU_TESS_COMBINE_DATA = 100111;
|
||
#endregion int GLU_TESS_COMBINE_DATA
|
||
#endregion TessCallback
|
||
|
||
#region TessError
|
||
#region int GLU_TESS_ERROR1
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR1 100151
|
||
public const int GLU_TESS_ERROR1 = 100151;
|
||
#endregion int GLU_TESS_ERROR1
|
||
|
||
#region int GLU_TESS_ERROR2
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR2 100152
|
||
public const int GLU_TESS_ERROR2 = 100152;
|
||
#endregion int GLU_TESS_ERROR2
|
||
|
||
#region int GLU_TESS_ERROR3
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR3 100153
|
||
public const int GLU_TESS_ERROR3 = 100153;
|
||
#endregion int GLU_TESS_ERROR3
|
||
|
||
#region int GLU_TESS_ERROR4
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR4 100154
|
||
public const int GLU_TESS_ERROR4 = 100154;
|
||
#endregion int GLU_TESS_ERROR4
|
||
|
||
#region int GLU_TESS_ERROR5
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR5 100155
|
||
public const int GLU_TESS_ERROR5 = 100155;
|
||
#endregion int GLU_TESS_ERROR5
|
||
|
||
#region int GLU_TESS_ERROR6
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR6 100156
|
||
public const int GLU_TESS_ERROR6 = 100156;
|
||
#endregion int GLU_TESS_ERROR6
|
||
|
||
#region int GLU_TESS_ERROR7
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR7 100157
|
||
public const int GLU_TESS_ERROR7 = 100157;
|
||
#endregion int GLU_TESS_ERROR7
|
||
|
||
#region int GLU_TESS_ERROR8
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_ERROR8 100158
|
||
public const int GLU_TESS_ERROR8 = 100158;
|
||
#endregion int GLU_TESS_ERROR8
|
||
|
||
#region int GLU_TESS_MISSING_BEGIN_POLYGON
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_MISSING_BEGIN_POLYGON GLU_TESS_ERROR1
|
||
public const int GLU_TESS_MISSING_BEGIN_POLYGON = GLU_TESS_ERROR1;
|
||
#endregion int GLU_TESS_MISSING_BEGIN_POLYGON
|
||
|
||
#region int GLU_TESS_MISSING_BEGIN_CONTOUR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_MISSING_BEGIN_CONTOUR GLU_TESS_ERROR2
|
||
public const int GLU_TESS_MISSING_BEGIN_CONTOUR = GLU_TESS_ERROR2;
|
||
#endregion int GLU_TESS_MISSING_BEGIN_CONTOUR
|
||
|
||
#region int GLU_TESS_MISSING_END_POLYGON
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_MISSING_END_POLYGON GLU_TESS_ERROR3
|
||
public const int GLU_TESS_MISSING_END_POLYGON = GLU_TESS_ERROR3;
|
||
#endregion int GLU_TESS_MISSING_END_POLYGON
|
||
|
||
#region int GLU_TESS_MISSING_END_CONTOUR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_MISSING_END_CONTOUR GLU_TESS_ERROR4
|
||
public const int GLU_TESS_MISSING_END_CONTOUR = GLU_TESS_ERROR4;
|
||
#endregion int GLU_TESS_MISSING_END_CONTOUR
|
||
|
||
#region int GLU_TESS_COORD_TOO_LARGE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_COORD_TOO_LARGE GLU_TESS_ERROR5
|
||
public const int GLU_TESS_COORD_TOO_LARGE = GLU_TESS_ERROR5;
|
||
#endregion int GLU_TESS_COORD_TOO_LARGE
|
||
|
||
#region int GLU_TESS_NEED_COMBINE_CALLBACK
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_TESS_NEED_COMBINE_CALLBACK GLU_TESS_ERROR6
|
||
public const int GLU_TESS_NEED_COMBINE_CALLBACK = GLU_TESS_ERROR6;
|
||
#endregion int GLU_TESS_NEED_COMBINE_CALLBACK
|
||
#endregion TessError
|
||
|
||
#region NurbsProperty
|
||
#region int GLU_AUTO_LOAD_MATRIX
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_AUTO_LOAD_MATRIX 100200
|
||
public const int GLU_AUTO_LOAD_MATRIX = 100200;
|
||
#endregion int GLU_AUTO_LOAD_MATRIX
|
||
|
||
#region int GLU_CULLING
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_CULLING 100201
|
||
public const int GLU_CULLING = 100201;
|
||
#endregion int GLU_CULLING
|
||
|
||
#region int GLU_PARAMETRIC_TOLERANCE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_PARAMETRIC_TOLERANCE 100202
|
||
public const int GLU_PARAMETRIC_TOLERANCE = 100202;
|
||
#endregion int GLU_PARAMETRIC_TOLERANCE
|
||
|
||
#region int GLU_SAMPLING_TOLERANCE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_SAMPLING_TOLERANCE 100203
|
||
public const int GLU_SAMPLING_TOLERANCE = 100203;
|
||
#endregion int GLU_SAMPLING_TOLERANCE
|
||
|
||
#region int GLU_DISPLAY_MODE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_DISPLAY_MODE 100204
|
||
public const int GLU_DISPLAY_MODE = 100204;
|
||
#endregion int GLU_DISPLAY_MODE
|
||
|
||
#region int GLU_SAMPLING_METHOD
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_SAMPLING_METHOD 100205
|
||
public const int GLU_SAMPLING_METHOD = 100205;
|
||
#endregion int GLU_SAMPLING_METHOD
|
||
|
||
#region int GLU_U_STEP
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_U_STEP 100206
|
||
public const int GLU_U_STEP = 100206;
|
||
#endregion int GLU_U_STEP
|
||
|
||
#region int GLU_V_STEP
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_V_STEP 100207
|
||
public const int GLU_V_STEP = 100207;
|
||
#endregion int GLU_V_STEP
|
||
|
||
#region int GLU_NURBS_MODE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_MODE 100160
|
||
public const int GLU_NURBS_MODE = 100160;
|
||
#endregion int GLU_NURBS_MODE
|
||
|
||
#region int GLU_NURBS_MODE_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_MODE_EXT 100160
|
||
public const int GLU_NURBS_MODE_EXT = 100160;
|
||
#endregion int GLU_NURBS_MODE_EXT
|
||
|
||
#region int GLU_NURBS_TESSELLATOR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_TESSELLATOR 100161
|
||
public const int GLU_NURBS_TESSELLATOR = 100161;
|
||
#endregion int GLU_NURBS_TESSELLATOR
|
||
|
||
#region int GLU_NURBS_TESSELLATOR_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_TESSELLATOR_EXT 100161
|
||
public const int GLU_NURBS_TESSELLATOR_EXT = 100161;
|
||
#endregion int GLU_NURBS_TESSELLATOR_EXT
|
||
|
||
#region int GLU_NURBS_RENDERER
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_RENDERER 100162
|
||
public const int GLU_NURBS_RENDERER = 100162;
|
||
#endregion int GLU_NURBS_RENDERER
|
||
|
||
#region int GLU_NURBS_RENDERER_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_RENDERER_EXT 100162
|
||
public const int GLU_NURBS_RENDERER_EXT = 100162;
|
||
#endregion int GLU_NURBS_RENDERER_EXT
|
||
#endregion NurbsProperty
|
||
|
||
#region NurbsSampling
|
||
#region int GLU_OBJECT_PARAMETRIC_ERROR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_OBJECT_PARAMETRIC_ERROR 100208
|
||
public const int GLU_OBJECT_PARAMETRIC_ERROR = 100208;
|
||
#endregion int GLU_OBJECT_PARAMETRIC_ERROR
|
||
|
||
#region int GLU_OBJECT_PARAMETRIC_ERROR_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208
|
||
public const int GLU_OBJECT_PARAMETRIC_ERROR_EXT = 100208;
|
||
#endregion int GLU_OBJECT_PARAMETRIC_ERROR_EXT
|
||
|
||
#region int GLU_OBJECT_PATH_LENGTH
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_OBJECT_PATH_LENGTH 100209
|
||
public const int GLU_OBJECT_PATH_LENGTH = 100209;
|
||
#endregion int GLU_OBJECT_PATH_LENGTH
|
||
|
||
#region int GLU_OBJECT_PATH_LENGTH_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_OBJECT_PATH_LENGTH_EXT 100209
|
||
public const int GLU_OBJECT_PATH_LENGTH_EXT = 100209;
|
||
#endregion int GLU_OBJECT_PATH_LENGTH_EXT
|
||
|
||
#region int GLU_PATH_LENGTH
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_PATH_LENGTH 100215
|
||
public const int GLU_PATH_LENGTH = 100215;
|
||
#endregion int GLU_PATH_LENGTH
|
||
|
||
#region int GLU_PARAMETRIC_ERROR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_PARAMETRIC_ERROR 100216
|
||
public const int GLU_PARAMETRIC_ERROR = 100216;
|
||
#endregion int GLU_PARAMETRIC_ERROR
|
||
|
||
#region int GLU_DOMAIN_DISTANCE
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_DOMAIN_DISTANCE 100217
|
||
public const int GLU_DOMAIN_DISTANCE = 100217;
|
||
#endregion int GLU_DOMAIN_DISTANCE
|
||
#endregion NurbsSampling
|
||
|
||
#region NurbsTrim
|
||
#region int GLU_MAP1_TRIM_2
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_MAP1_TRIM_2 100210
|
||
public const int GLU_MAP1_TRIM_2 = 100210;
|
||
#endregion int GLU_MAP1_TRIM_2
|
||
|
||
#region int GLU_MAP1_TRIM_3
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_MAP1_TRIM_3 100211
|
||
public const int GLU_MAP1_TRIM_3 = 100211;
|
||
#endregion int GLU_MAP1_TRIM_3
|
||
#endregion NurbsTrim
|
||
|
||
#region NurbsDisplay
|
||
#region int GLU_OUTLINE_POLYGON
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_OUTLINE_POLYGON 100240
|
||
public const int GLU_OUTLINE_POLYGON = 100240;
|
||
#endregion int GLU_OUTLINE_POLYGON
|
||
|
||
#region int GLU_OUTLINE_PATCH
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_OUTLINE_PATCH 100241
|
||
public const int GLU_OUTLINE_PATCH = 100241;
|
||
#endregion int GLU_OUTLINE_PATCH
|
||
#endregion NurbsDisplay
|
||
|
||
#region NurbsCallback
|
||
#region int GLU_NURBS_ERROR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR 100103
|
||
public const int GLU_NURBS_ERROR = 100103;
|
||
#endregion int GLU_NURBS_ERROR
|
||
|
||
#region int GLU_ERROR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_ERROR 100103
|
||
public const int GLU_ERROR = 100103;
|
||
#endregion int GLU_ERROR
|
||
|
||
#region int GLU_NURBS_BEGIN
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_BEGIN 100164
|
||
public const int GLU_NURBS_BEGIN = 100164;
|
||
#endregion int GLU_NURBS_BEGIN
|
||
|
||
#region int GLU_NURBS_BEGIN_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_BEGIN_EXT 100164
|
||
public const int GLU_NURBS_BEGIN_EXT = 100164;
|
||
#endregion int GLU_NURBS_BEGIN_EXT
|
||
|
||
#region int GLU_NURBS_VERTEX
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_VERTEX 100165
|
||
public const int GLU_NURBS_VERTEX = 100165;
|
||
#endregion int GLU_NURBS_VERTEX
|
||
|
||
#region int GLU_NURBS_VERTEX_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_VERTEX_EXT 100165
|
||
public const int GLU_NURBS_VERTEX_EXT = 100165;
|
||
#endregion int GLU_NURBS_VERTEX_EXT
|
||
|
||
#region int GLU_NURBS_NORMAL
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_NORMAL 100166
|
||
public const int GLU_NURBS_NORMAL = 100166;
|
||
#endregion int GLU_NURBS_NORMAL
|
||
|
||
#region int GLU_NURBS_NORMAL_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_NORMAL_EXT 100166
|
||
public const int GLU_NURBS_NORMAL_EXT = 100166;
|
||
#endregion int GLU_NURBS_NORMAL_EXT
|
||
|
||
#region int GLU_NURBS_COLOR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_COLOR 100167
|
||
public const int GLU_NURBS_COLOR = 100167;
|
||
#endregion int GLU_NURBS_COLOR
|
||
|
||
#region int GLU_NURBS_COLOR_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_COLOR_EXT 100167
|
||
public const int GLU_NURBS_COLOR_EXT = 100167;
|
||
#endregion int GLU_NURBS_COLOR_EXT
|
||
|
||
#region int GLU_NURBS_TEXTURE_COORD
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_TEXTURE_COORD 100168
|
||
public const int GLU_NURBS_TEXTURE_COORD = 100168;
|
||
#endregion int GLU_NURBS_TEXTURE_COORD
|
||
|
||
#region int GLU_NURBS_TEX_COORD_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_TEX_COORD_EXT 100168
|
||
public const int GLU_NURBS_TEX_COORD_EXT = 100168;
|
||
#endregion int GLU_NURBS_TEX_COORD_EXT
|
||
|
||
#region int GLU_NURBS_END
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_END 100169
|
||
public const int GLU_NURBS_END = 100169;
|
||
#endregion int GLU_NURBS_END
|
||
|
||
#region int GLU_NURBS_END_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_END_EXT 100169
|
||
public const int GLU_NURBS_END_EXT = 100169;
|
||
#endregion int GLU_NURBS_END_EXT
|
||
|
||
#region int GLU_NURBS_BEGIN_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_BEGIN_DATA 100170
|
||
public const int GLU_NURBS_BEGIN_DATA = 100170;
|
||
#endregion int GLU_NURBS_BEGIN_DATA
|
||
|
||
#region int GLU_NURBS_BEGIN_DATA_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_BEGIN_DATA_EXT 100170
|
||
public const int GLU_NURBS_BEGIN_DATA_EXT = 100170;
|
||
#endregion int GLU_NURBS_BEGIN_DATA_EXT
|
||
|
||
#region int GLU_NURBS_VERTEX_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_VERTEX_DATA 100171
|
||
public const int GLU_NURBS_VERTEX_DATA = 100171;
|
||
#endregion int GLU_NURBS_VERTEX_DATA
|
||
|
||
#region int GLU_NURBS_VERTEX_DATA_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_VERTEX_DATA_EXT 100171
|
||
public const int GLU_NURBS_VERTEX_DATA_EXT = 100171;
|
||
#endregion int GLU_NURBS_VERTEX_DATA_EXT
|
||
|
||
#region int GLU_NURBS_NORMAL_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_NORMAL_DATA 100172
|
||
public const int GLU_NURBS_NORMAL_DATA = 100172;
|
||
#endregion int GLU_NURBS_NORMAL_DATA
|
||
|
||
#region int GLU_NURBS_NORMAL_DATA_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_NORMAL_DATA_EXT 100172
|
||
public const int GLU_NURBS_NORMAL_DATA_EXT = 100172;
|
||
#endregion int GLU_NURBS_NORMAL_DATA_EXT
|
||
|
||
#region int GLU_NURBS_COLOR_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_COLOR_DATA 100173
|
||
public const int GLU_NURBS_COLOR_DATA = 100173;
|
||
#endregion int GLU_NURBS_COLOR_DATA
|
||
|
||
#region int GLU_NURBS_COLOR_DATA_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_COLOR_DATA_EXT 100173
|
||
public const int GLU_NURBS_COLOR_DATA_EXT = 100173;
|
||
#endregion int GLU_NURBS_COLOR_DATA_EXT
|
||
|
||
#region int GLU_NURBS_TEXTURE_COORD_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_TEXTURE_COORD_DATA 100174
|
||
public const int GLU_NURBS_TEXTURE_COORD_DATA = 100174;
|
||
#endregion int GLU_NURBS_TEXTURE_COORD_DATA
|
||
|
||
#region int GLU_NURBS_TEX_COORD_DATA_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_TEX_COORD_DATA_EXT 100174
|
||
public const int GLU_NURBS_TEX_COORD_DATA_EXT = 100174;
|
||
#endregion int GLU_NURBS_TEX_COORD_DATA_EXT
|
||
|
||
#region int GLU_NURBS_END_DATA
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_END_DATA 100175
|
||
public const int GLU_NURBS_END_DATA = 100175;
|
||
#endregion int GLU_NURBS_END_DATA
|
||
|
||
#region int GLU_NURBS_END_DATA_EXT
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_END_DATA_EXT 100175
|
||
public const int GLU_NURBS_END_DATA_EXT = 100175;
|
||
#endregion int GLU_NURBS_END_DATA_EXT
|
||
#endregion NurbsCallback
|
||
|
||
#region NurbsErrors
|
||
#region int GLU_NURBS_ERROR1
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR1 100251
|
||
public const int GLU_NURBS_ERROR1 = 100251;
|
||
#endregion int GLU_NURBS_ERROR1
|
||
|
||
#region int GLU_NURBS_ERROR2
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR2 100252
|
||
public const int GLU_NURBS_ERROR2 = 100252;
|
||
#endregion int GLU_NURBS_ERROR2
|
||
|
||
#region int GLU_NURBS_ERROR3
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR3 100253
|
||
public const int GLU_NURBS_ERROR3 = 100253;
|
||
#endregion int GLU_NURBS_ERROR3
|
||
|
||
#region int GLU_NURBS_ERROR4
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR4 100254
|
||
public const int GLU_NURBS_ERROR4 = 100254;
|
||
#endregion int GLU_NURBS_ERROR4
|
||
|
||
#region int GLU_NURBS_ERROR5
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR5 100255
|
||
public const int GLU_NURBS_ERROR5 = 100255;
|
||
#endregion int GLU_NURBS_ERROR5
|
||
|
||
#region int GLU_NURBS_ERROR6
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR6 100256
|
||
public const int GLU_NURBS_ERROR6 = 100256;
|
||
#endregion int GLU_NURBS_ERROR6
|
||
|
||
#region int GLU_NURBS_ERROR7
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR7 100257
|
||
public const int GLU_NURBS_ERROR7 = 100257;
|
||
#endregion int GLU_NURBS_ERROR7
|
||
|
||
#region int GLU_NURBS_ERROR8
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR8 100258
|
||
public const int GLU_NURBS_ERROR8 = 100258;
|
||
#endregion int GLU_NURBS_ERROR8
|
||
|
||
#region int GLU_NURBS_ERROR9
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR9 100259
|
||
public const int GLU_NURBS_ERROR9 = 100259;
|
||
#endregion int GLU_NURBS_ERROR9
|
||
|
||
#region int GLU_NURBS_ERROR10
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR10 100260
|
||
public const int GLU_NURBS_ERROR10 = 100260;
|
||
#endregion int GLU_NURBS_ERROR10
|
||
|
||
#region int GLU_NURBS_ERROR11
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR11 100261
|
||
public const int GLU_NURBS_ERROR11 = 100261;
|
||
#endregion int GLU_NURBS_ERROR11
|
||
|
||
#region int GLU_NURBS_ERROR12
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR12 100262
|
||
public const int GLU_NURBS_ERROR12 = 100262;
|
||
#endregion int GLU_NURBS_ERROR12
|
||
|
||
#region int GLU_NURBS_ERROR13
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR13 100263
|
||
public const int GLU_NURBS_ERROR13 = 100263;
|
||
#endregion int GLU_NURBS_ERROR13
|
||
|
||
#region int GLU_NURBS_ERROR14
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR14 100264
|
||
public const int GLU_NURBS_ERROR14 = 100264;
|
||
#endregion int GLU_NURBS_ERROR14
|
||
|
||
#region int GLU_NURBS_ERROR15
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR15 100265
|
||
public const int GLU_NURBS_ERROR15 = 100265;
|
||
#endregion int GLU_NURBS_ERROR15
|
||
|
||
#region int GLU_NURBS_ERROR16
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR16 100266
|
||
public const int GLU_NURBS_ERROR16 = 100266;
|
||
#endregion int GLU_NURBS_ERROR16
|
||
|
||
#region int GLU_NURBS_ERROR17
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR17 100267
|
||
public const int GLU_NURBS_ERROR17 = 100267;
|
||
#endregion int GLU_NURBS_ERROR17
|
||
|
||
#region int GLU_NURBS_ERROR18
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR18 100268
|
||
public const int GLU_NURBS_ERROR18 = 100268;
|
||
#endregion int GLU_NURBS_ERROR18
|
||
|
||
#region int GLU_NURBS_ERROR19
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR19 100269
|
||
public const int GLU_NURBS_ERROR19 = 100269;
|
||
#endregion int GLU_NURBS_ERROR19
|
||
|
||
#region int GLU_NURBS_ERROR20
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR20 100270
|
||
public const int GLU_NURBS_ERROR20 = 100270;
|
||
#endregion int GLU_NURBS_ERROR20
|
||
|
||
#region int GLU_NURBS_ERROR21
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR21 100271
|
||
public const int GLU_NURBS_ERROR21 = 100271;
|
||
#endregion int GLU_NURBS_ERROR21
|
||
|
||
#region int GLU_NURBS_ERROR22
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR22 100272
|
||
public const int GLU_NURBS_ERROR22 = 100272;
|
||
#endregion int GLU_NURBS_ERROR22
|
||
|
||
#region int GLU_NURBS_ERROR23
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR23 100273
|
||
public const int GLU_NURBS_ERROR23 = 100273;
|
||
#endregion int GLU_NURBS_ERROR23
|
||
|
||
#region int GLU_NURBS_ERROR24
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR24 100274
|
||
public const int GLU_NURBS_ERROR24 = 100274;
|
||
#endregion int GLU_NURBS_ERROR24
|
||
|
||
#region int GLU_NURBS_ERROR25
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR25 100275
|
||
public const int GLU_NURBS_ERROR25 = 100275;
|
||
#endregion int GLU_NURBS_ERROR25
|
||
|
||
#region int GLU_NURBS_ERROR26
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR26 100276
|
||
public const int GLU_NURBS_ERROR26 = 100276;
|
||
#endregion int GLU_NURBS_ERROR26
|
||
|
||
#region int GLU_NURBS_ERROR27
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR27 100277
|
||
public const int GLU_NURBS_ERROR27 = 100277;
|
||
#endregion int GLU_NURBS_ERROR27
|
||
|
||
#region int GLU_NURBS_ERROR28
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR28 100278
|
||
public const int GLU_NURBS_ERROR28 = 100278;
|
||
#endregion int GLU_NURBS_ERROR28
|
||
|
||
#region int GLU_NURBS_ERROR29
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR29 100279
|
||
public const int GLU_NURBS_ERROR29 = 100279;
|
||
#endregion int GLU_NURBS_ERROR29
|
||
|
||
#region int GLU_NURBS_ERROR30
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR30 100280
|
||
public const int GLU_NURBS_ERROR30 = 100280;
|
||
#endregion int GLU_NURBS_ERROR30
|
||
|
||
#region int GLU_NURBS_ERROR31
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR31 100281
|
||
public const int GLU_NURBS_ERROR31 = 100281;
|
||
#endregion int GLU_NURBS_ERROR31
|
||
|
||
#region int GLU_NURBS_ERROR32
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR32 100282
|
||
public const int GLU_NURBS_ERROR32 = 100282;
|
||
#endregion int GLU_NURBS_ERROR32
|
||
|
||
#region int GLU_NURBS_ERROR33
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR33 100283
|
||
public const int GLU_NURBS_ERROR33 = 100283;
|
||
#endregion int GLU_NURBS_ERROR33
|
||
|
||
#region int GLU_NURBS_ERROR34
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR34 100284
|
||
public const int GLU_NURBS_ERROR34 = 100284;
|
||
#endregion int GLU_NURBS_ERROR34
|
||
|
||
#region int GLU_NURBS_ERROR35
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR35 100285
|
||
public const int GLU_NURBS_ERROR35 = 100285;
|
||
#endregion int GLU_NURBS_ERROR35
|
||
|
||
#region int GLU_NURBS_ERROR36
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR36 100286
|
||
public const int GLU_NURBS_ERROR36 = 100286;
|
||
#endregion int GLU_NURBS_ERROR36
|
||
|
||
#region int GLU_NURBS_ERROR37
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_NURBS_ERROR37 100287
|
||
public const int GLU_NURBS_ERROR37 = 100287;
|
||
#endregion int GLU_NURBS_ERROR37
|
||
#endregion NurbsErrors
|
||
|
||
#region Contours types
|
||
#region int GLU_CW
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_CW 100120
|
||
public const int GLU_CW = 100120;
|
||
#endregion int GLU_CW
|
||
|
||
#region int GLU_CCW
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_CCW 100121
|
||
public const int GLU_CCW = 100121;
|
||
#endregion int GLU_CCW
|
||
|
||
#region int GLU_INTERIOR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_INTERIOR 100122
|
||
public const int GLU_INTERIOR = 100122;
|
||
#endregion int GLU_INTERIOR
|
||
|
||
#region int GLU_EXTERIOR
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_EXTERIOR 100123
|
||
public const int GLU_EXTERIOR = 100123;
|
||
#endregion int GLU_EXTERIOR
|
||
|
||
#region int GLU_UNKNOWN
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_UNKNOWN 100124
|
||
public const int GLU_UNKNOWN = 100124;
|
||
#endregion int GLU_UNKNOWN
|
||
#endregion Contours types
|
||
|
||
#region Extensions
|
||
#region int GLU_EXT_object_space_tess
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_EXT_object_space_tess 1
|
||
public const int GLU_EXT_object_space_tess = 1;
|
||
#endregion int GLU_EXT_object_space_tess
|
||
|
||
#region int GLU_EXT_nurbs_tessellator
|
||
/// <summary>
|
||
/// Unknown. Unable to locate definitive documentation on this constant.
|
||
/// </summary>
|
||
// #define GLU_EXT_nurbs_tessellator 1
|
||
public const int GLU_EXT_nurbs_tessellator = 1;
|
||
#endregion int GLU_EXT_nurbs_tessellator
|
||
#endregion Extensions
|
||
#endregion Public Constants
|
||
|
||
#region Public Structs
|
||
#region GLUnurbs
|
||
/// <summary>
|
||
/// Defines a GLU NURBS object.
|
||
/// </summary>
|
||
[StructLayout(LayoutKind.Sequential)]
|
||
public struct GLUnurbs
|
||
{
|
||
/// <summary>
|
||
/// Keeps the struct from being garbage collected prematurely.
|
||
/// </summary>
|
||
private IntPtr Data;
|
||
}
|
||
#endregion GLUnurbs
|
||
|
||
#region GLUquadric
|
||
/// <summary>
|
||
/// Defines a GLU quadric object.
|
||
/// </summary>
|
||
[StructLayout(LayoutKind.Sequential)]
|
||
public struct GLUquadric
|
||
{
|
||
/// <summary>
|
||
/// Keeps the struct from being garbage collected prematurely.
|
||
/// </summary>
|
||
private IntPtr Data;
|
||
}
|
||
#endregion GLUquadric
|
||
|
||
#region GLUtesselator
|
||
/// <summary>
|
||
/// Defines a GLU tesselator object.
|
||
/// </summary>
|
||
[StructLayout(LayoutKind.Sequential)]
|
||
public struct GLUtesselator
|
||
{
|
||
/// <summary>
|
||
/// Keeps the struct from being garbage collected prematurely.
|
||
/// </summary>
|
||
private IntPtr Data;
|
||
}
|
||
#endregion GLUtesselator
|
||
|
||
#region GLUnurbsObj
|
||
/// <summary>
|
||
/// Defines a GLU NURBS object.
|
||
/// </summary>
|
||
[StructLayout(LayoutKind.Sequential)]
|
||
public struct GLUnurbsObj
|
||
{
|
||
/// <summary>
|
||
/// Keeps the struct from being garbage collected prematurely.
|
||
/// </summary>
|
||
private IntPtr Data;
|
||
}
|
||
#endregion GLUnurbsObj
|
||
|
||
#region GLUquadricObj
|
||
/// <summary>
|
||
/// Defines a GLU quadric object.
|
||
/// </summary>
|
||
[StructLayout(LayoutKind.Sequential)]
|
||
public struct GLUquadricObj
|
||
{
|
||
/// <summary>
|
||
/// Keeps the struct from being garbage collected prematurely.
|
||
/// </summary>
|
||
private IntPtr Data;
|
||
}
|
||
#endregion GLUquadricObj
|
||
|
||
#region GLUtesselatorObj
|
||
/// <summary>
|
||
/// Defines a GLU tesselator object.
|
||
/// </summary>
|
||
[StructLayout(LayoutKind.Sequential)]
|
||
public struct GLUtesselatorObj
|
||
{
|
||
/// <summary>
|
||
/// Keeps the struct from being garbage collected prematurely.
|
||
/// </summary>
|
||
private IntPtr Data;
|
||
}
|
||
#endregion GLUtesselatorObj
|
||
|
||
#region GLUtriangulatorObj
|
||
/// <summary>
|
||
/// Defines a GLU triangulator object.
|
||
/// </summary>
|
||
[StructLayout(LayoutKind.Sequential)]
|
||
public struct GLUtriangulatorObj
|
||
{
|
||
/// <summary>
|
||
/// Keeps the struct from being garbage collected prematurely.
|
||
/// </summary>
|
||
private IntPtr Data;
|
||
}
|
||
#endregion GLUtriangulatorObj
|
||
#endregion Public Structs
|
||
|
||
#region Private Fields
|
||
// These fields hold references to any callbacks used so as to prevent the garbage
|
||
// collector from sweeping the delegates even though the application may not be done
|
||
// with them.
|
||
private static NurbsBeginCallback nurbsBeginCallback;
|
||
private static NurbsBeginDataCallback nurbsBeginDataCallback;
|
||
private static NurbsColorCallback nurbsColorCallback;
|
||
private static NurbsColorDataCallback nurbsColorDataCallback;
|
||
private static NurbsEndCallback nurbsEndCallback;
|
||
private static NurbsEndDataCallback nurbsEndDataCallback;
|
||
private static NurbsErrorCallback nurbsErrorCallback;
|
||
private static NurbsNormalCallback nurbsNormalCallback;
|
||
private static NurbsNormalDataCallback nurbsNormalDataCallback;
|
||
private static NurbsTexCoordCallback nurbsTexCoordCallback;
|
||
private static NurbsTexCoordDataCallback nurbsTexCoordDataCallback;
|
||
private static NurbsVertexCallback nurbsVertexCallback;
|
||
private static NurbsVertexDataCallback nurbsVertexDataCallback;
|
||
private static QuadricErrorCallback quadricErrorCallback;
|
||
private static TessBeginCallback tessBeginCallback;
|
||
private static TessBeginDataCallback tessBeginDataCallback;
|
||
private static TessCombineCallback tessCombineCallback;
|
||
private static TessCombineCallback1 tessCombineCallback1;
|
||
private static TessCombineDataCallback tessCombineDataCallback;
|
||
private static TessEdgeFlagCallback tessEdgeFlagCallback;
|
||
private static TessEdgeFlagDataCallback tessEdgeFlagDataCallback;
|
||
private static TessEndCallback tessEndCallback;
|
||
private static TessEndDataCallback tessEndDataCallback;
|
||
private static TessErrorCallback tessErrorCallback;
|
||
private static TessErrorDataCallback tessErrorDataCallback;
|
||
private static TessVertexCallback tessVertexCallback;
|
||
private static TessVertexCallback1 tessVertexCallback1;
|
||
private static TessVertexDataCallback tessVertexDataCallback;
|
||
#endregion Private Fields
|
||
|
||
// --- Public Delegates ---
|
||
#region NurbsBeginCallback(int type)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void begin(GLenum type);
|
||
public delegate void NurbsBeginCallback(int type);
|
||
#endregion NurbsBeginCallback(int type)
|
||
|
||
#region NurbsBeginDataCallback(int type, [In] IntPtr[] userData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void beginData(GLenum type, void *userData);
|
||
public delegate void NurbsBeginDataCallback(int type, [In] IntPtr[] userData);
|
||
#endregion NurbsBeginDataCallback(int type, [In] IntPtr[] userData)
|
||
|
||
#region NurbsColorCallback([In] float[] colorData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void color(GLfloat *color);
|
||
public delegate void NurbsColorCallback([In] float[] colorData);
|
||
#endregion NurbsColorCallback([In] float[] colorData)
|
||
|
||
#region NurbsColorDataCallback([In] float[] colorData, [In] IntPtr[] userData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void colorData(GLfloat *color, void *userData);
|
||
public delegate void NurbsColorDataCallback([In] float[] colorData, [In] IntPtr[] userData);
|
||
#endregion NurbsColorDataCallback([In] float[] colorData, [In] IntPtr[] userData)
|
||
|
||
#region NurbsEndCallback()
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void end(void);
|
||
public delegate void NurbsEndCallback();
|
||
#endregion NurbsEndCallback()
|
||
|
||
#region NurbsEndDataCallback([In] IntPtr[] userData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void endData(void *userData);
|
||
public delegate void NurbsEndDataCallback([In] IntPtr[] userData);
|
||
#endregion NurbsEndDataCallback([In] IntPtr[] userData)
|
||
|
||
#region NurbsErrorCallback(int type)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUnurbsErrorProc) (GLenum);
|
||
public delegate void NurbsErrorCallback(int type);
|
||
#endregion NurbsErrorCallback(int type)
|
||
|
||
#region NurbsNormalCallback([In] float[] normalData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void normal(GLfloat *normal);
|
||
public delegate void NurbsNormalCallback([In] float[] normalData);
|
||
#endregion NurbsNormalCallback([In] float[] normalData)
|
||
|
||
#region NurbsNormalDataCallback([In] float[] normalData, [In] IntPtr[] userData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void normalData(GLfloat *normal, void *userData);
|
||
public delegate void NurbsNormalDataCallback([In] float[] normalData, [In] IntPtr[] userData);
|
||
#endregion NurbsNormalDataCallback([In] float[] normalData, [In] IntPtr[] userData)
|
||
|
||
#region NurbsTexCoordCallback([In] float[] texCoord)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void texCoord(GLfloat *tex coord);
|
||
public delegate void NurbsTexCoordCallback([In] float[] texCoord);
|
||
#endregion NurbsTexCoordCallback([In] float[] texCoord)
|
||
|
||
#region NurbsTexCoordDataCallback([In] float[] texCoord, [In] IntPtr[] userData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void texCoordData(GLfloat *tex coord, void *userData);
|
||
public delegate void NurbsTexCoordDataCallback([In] float[] texCoord, [In] IntPtr[] userData);
|
||
#endregion NurbsTexCoordDataCallback([In] float[] texCoord, [In] IntPtr[] userData)
|
||
|
||
#region NurbsVertexCallback([In] float[] vertexData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void vertex(GLfloat *vertex);
|
||
public delegate void NurbsVertexCallback([In] float[] vertexData);
|
||
#endregion NurbsVertexCallback([In] float[] vertexData)
|
||
|
||
#region NurbsVertexDataCallback([In] float[] vertexData, [In] IntPtr[] userData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void vertexData(GLfloat *vertex, void *userData);
|
||
public delegate void NurbsVertexDataCallback([In] float[] vertexData, [In] IntPtr[] userData);
|
||
#endregion NurbsVertexDataCallback([In] float[] vertexData, [In] IntPtr[] userData)
|
||
|
||
#region QuadricErrorCallback(int errorCode)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluQuadricCallback" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluQuadricCallback" />
|
||
// typedef void (CALLBACK* GLUquadricErrorProc) (GLenum);
|
||
public delegate void QuadricErrorCallback(int errorCode);
|
||
#endregion QuadricErrorCallback(int errorCode)
|
||
|
||
#region TessBeginCallback(int type)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessBeginProc) (GLenum);
|
||
public delegate void TessBeginCallback(int type);
|
||
#endregion TessBeginCallback(int type)
|
||
|
||
#region TessBeginDataCallback(int type, [In] IntPtr polygonData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessBeginDataProc) (GLenum, void *);
|
||
public delegate void TessBeginDataCallback(int type, [In] IntPtr polygonData);
|
||
#endregion TessBeginDataCallback(int type, [In] IntPtr polygonData)
|
||
|
||
#region TessCombineCallback([In] double[] coordinates, [In] IntPtr[] vertexData, [In] float[] weight, [Out] IntPtr[] outData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessCombineProc) (GLdouble[3], void*[4], GLfloat[4], void**);
|
||
public delegate void TessCombineCallback([In] double[] coordinates, [In] IntPtr[] vertexData, [In] float[] weight, [Out] IntPtr[] outData);
|
||
#endregion TessCombineCallback([In] double[] coordinates, [In] IntPtr[] vertexData, [In] float[] weight, [Out] IntPtr[] outData)
|
||
|
||
#region TessCombineCallback1([In] double[] coordinates, [In] double[][] vertexData, [In] float[] weight, [Out] double[] outData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessCombineProc) (GLdouble[3], void*[4], GLfloat[4], void**);
|
||
public delegate void TessCombineCallback1([MarshalAs(UnmanagedType.LPArray, SizeConst = 3)] [In] double[] coordinates, [MarshalAs(UnmanagedType.LPArray, SizeConst = 4)] [In] double[] vertexData, [MarshalAs(UnmanagedType.LPArray, SizeConst = 4)] [In] float[] weight, [Out] double[] outData);
|
||
#endregion TessCombineCallback1([In] double[] coordinates, [In] double[][] vertexData, [In] float[] weight, [Out] double[] outData)
|
||
|
||
#region TessCombineDataCallback([In] double[] coordinates, [In] IntPtr[] vertexData, [In] float[] weight, [Out] IntPtr[] outData, [In] IntPtr polygonData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessCombineDataProc) (GLdouble[3], void*[4], GLfloat[4], void**, void*);
|
||
public delegate void TessCombineDataCallback([In] double[] coordinates, [In] IntPtr[] vertexData, [In] float[] weight, [Out] IntPtr[] outData, [In] IntPtr polygonData);
|
||
#endregion TessCombineDataCallback([In] double[] coordinates, [In] IntPtr[] vertexData, [In] float[] weight, [Out] IntPtr[] outData, [In] IntPtr polygonData)
|
||
|
||
#region TessEdgeFlagCallback(int flag)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessEdgeFlagProc) (GLboolean);
|
||
public delegate void TessEdgeFlagCallback(int flag);
|
||
#endregion TessEdgeFlagCallback(int flag)
|
||
|
||
#region TessEdgeFlagDataCallback(int flag, [In] IntPtr polygonData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessEdgeFlagDataProc) (GLboolean, void *);
|
||
public delegate void TessEdgeFlagDataCallback(int flag, [In] IntPtr polygonData);
|
||
#endregion TessEdgeFlagDataCallback(int flag, [In] IntPtr polygonData)
|
||
|
||
#region TessEndCallback()
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessEndProc) (void);
|
||
public delegate void TessEndCallback();
|
||
#endregion TessEndCallback()
|
||
|
||
#region TessEndDataCallback([In] IntPtr polygonData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessEndDataProc) (void *);
|
||
public delegate void TessEndDataCallback(IntPtr polygonData);
|
||
#endregion TessEndDataCallback(IntPtr polygonData)
|
||
|
||
#region TessErrorCallback(int errorCode)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessErrorProc) (GLenum);
|
||
public delegate void TessErrorCallback(int errorCode);
|
||
#endregion TessErrorCallback(int errorCode)
|
||
|
||
#region TessErrorDataCallback(int errorCode, [In] IntPtr polygonData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessErrorDataProc) (GLenum, void *);
|
||
public delegate void TessErrorDataCallback(int errorCode, [In] IntPtr polygonData);
|
||
#endregion TessErrorDataCallback(int errorCode, [In] IntPtr polygonData)
|
||
|
||
#region TessVertexCallback([In] IntPtr vertexData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessVertexProc) (void *);
|
||
public delegate void TessVertexCallback([In] IntPtr vertexData);
|
||
#endregion TessVertexCallback([In] IntPtr vertexData)
|
||
|
||
#region TessVertexCallback1([In] double[] vertexData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessVertexProc) (void *);
|
||
public delegate void TessVertexCallback1([In] double[] vertexData);
|
||
#endregion TessVertexCallback1([In] double[] vertexData)
|
||
|
||
#region TessVertexDataCallback([In] IntPtr vertexData, [In] IntPtr polygonData)
|
||
/// <summary>
|
||
/// Callback (delegate) for use with <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// typedef void (CALLBACK* GLUtessVertexDataProc) (void *, void *);
|
||
public delegate void TessVertexDataCallback([In] IntPtr vertexData, [In] IntPtr polygonData);
|
||
#endregion TessVertexDataCallback([In] IntPtr vertexData, [In] IntPtr polygonData)
|
||
|
||
// --- Private Externs ---
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginDataCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginDataCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorDataCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorDataCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndDataCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndDataCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsErrorCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsErrorCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsErrorCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalDataCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalDataCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordDataCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordDataCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexCallback func)
|
||
|
||
#region __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluNurbsCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexDataCallback func);
|
||
#endregion __gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexDataCallback func)
|
||
|
||
#region __gluQuadricCallback([In] GLUquadric quad, int which, [In] QuadricErrorCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluQuadricCallback" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluQuadricCallback(GLUquadric *qobj, GLenum which, void (CALLBACK* fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluQuadricCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluQuadricCallback([In] GLUquadric quad, int which, [In] QuadricErrorCallback func);
|
||
#endregion __gluQuadricCallback([In] GLUquadric quad, int which, [In] QuadricErrorCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginDataCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginDataCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback1 func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback1 func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback1 func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineDataCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineDataCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagDataCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagDataCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndDataCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndDataCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorDataCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorDataCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback1 func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback1 func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback1 func)
|
||
|
||
#region __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexDataCallback func)
|
||
/// <summary>
|
||
/// Called from <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />.
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// <b>This method is not CLS-compliant due to naming conventions.</b>
|
||
/// </remarks>
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluTessCallback"), SuppressUnmanagedCodeSecurity]
|
||
private static extern void __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexDataCallback func);
|
||
#endregion __gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexDataCallback func)
|
||
|
||
// --- Public Externs ---
|
||
#region gluBeginCurve([In] GLUnurbs nurb)
|
||
/// <summary>
|
||
/// Delimits a Non-Uniform Rational B-Spline (NURBS) curve definition.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <b>gluBeginCurve</b> to mark the beginning of a NURBS curve definition.
|
||
/// After calling <b>gluBeginCurve</b>, make one or more calls to
|
||
/// <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" /> to define the attributes of the curve. Exactly
|
||
/// one of the calls to <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" /> must have a curve type of
|
||
/// <see cref="Gl.GL_MAP1_VERTEX_3" /> or <see cref="Gl.GL_MAP1_VERTEX_4" />. To
|
||
/// mark the end of the NURBS curve definition, call <see cref="gluEndCurve" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// OpenGL evaluators are used to render the NURBS curve as a series of line
|
||
/// segments. Evaluator state is preserved during rendering with
|
||
/// <c>Gl.glPushAttrib(Gl.GL_EVAL_BIT)</c> and <c>Gl.glPopAttrib</c>. For
|
||
/// information on exactly what state these calls preserve, see
|
||
/// <see cref="Gl.glPushAttrib" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following commands render a textured NURBS curve with normals; texture
|
||
/// coordinates and normals are also specified as NURBS curves:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginCurve(nobj);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_NORMAL);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_VERTEX_4);
|
||
/// Glu.gluEndCurve(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glPopAttrib" />
|
||
/// <seealso cref="Gl.glPushAttrib" />
|
||
/// <seealso cref="gluBeginSurface" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
// void APIENTRY gluBeginCurve(GLUnurbs *nobj);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluBeginCurve([In] GLUnurbs nurb);
|
||
#endregion gluBeginCurve([In] GLUnurbs nurb)
|
||
|
||
#region gluBeginPolygon([In] GLUtesselator tess)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBeginPolygon</b> delimits the definition of a nonconvex polygon. To
|
||
/// define such a polygon, first call <b>gluBeginPolygon</b>. Then define the
|
||
/// contours of the polygon by calling <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" /> for each
|
||
/// vertex and <see cref="gluNextContour" /> to start each new contour. Finally,
|
||
/// call <see cref="gluEndPolygon" /> to signal the end of the definition. See
|
||
/// the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" /> and <see cref="gluNextContour" /> reference
|
||
/// pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluEndPolygon" /> is called, the polygon is tessellated, and
|
||
/// the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// This command is obsolete and is provided for backward compatibility only.
|
||
/// Calls to <b>gluBeginPolygon</b> are mapped to
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> followed by
|
||
/// <see cref="gluTessBeginContour" />. Calls to <see cref="gluEndPolygon" />
|
||
/// are mapped to <see cref="gluTessEndContour" /> followed by
|
||
/// <see cref="gluTessEndPolygon" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// A quadrilateral with a triangular hole in it can be described like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginPolygon(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluNextContour(tobj, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluNextContour" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluBeginPolygon(GLUtesselator *tess);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluBeginPolygon([In] GLUtesselator tess);
|
||
#endregion gluBeginPolygon([In] GLUtesselator tess)
|
||
|
||
#region gluBeginSurface([In] GLUnurbs nurb)
|
||
/// <summary>
|
||
/// Delimits a NURBS surface definition.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <b>gluBeginSurface</b> to mark the beginning of a NURBS surface
|
||
/// definition. After calling <b>gluBeginSurface</b>, make one or more calls to
|
||
/// <see cref="gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int, float[], int, int, int)" /> to define the attributes of the surface.
|
||
/// Exactly one of these calls to <see cref="gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int, float[], int, int, int)" /> must have a
|
||
/// surface type of <see cref="Gl.GL_MAP2_VERTEX_3" /> or
|
||
/// <see cref="Gl.GL_MAP2_VERTEX_4" />. To mark the end of the NURBS surface
|
||
/// definition, call <see cref="gluEndSurface" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// Trimming of NURBS surfaces is supported with <see cref="gluBeginTrim" />,
|
||
/// <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />, <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />, and
|
||
/// <see cref="gluEndTrim" />. See the <see cref="gluBeginTrim" /> reference
|
||
/// page for details.
|
||
/// </para>
|
||
/// <para>
|
||
/// OpenGL evaluators are used to render the NURBS surface as a set of polygons.
|
||
/// Evaluator state is preserved during rendering with
|
||
/// <c>Gl.glPushAttrib(Gl.GL_EVAL_BIT)</c> and <c>Gl.glPopAttrib()</c>. See the
|
||
/// <see cref="Gl.glPushAttrib" /> reference page for details on exactly what
|
||
/// state these calls preserve.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following commands render a textured NURBS surface with normals; the
|
||
/// texture coordinates and normals are also described as NURBS surfaces:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginSurface(nobj);
|
||
/// Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_NORMAL);
|
||
/// Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_VERTEX_4);
|
||
/// Glu.gluEndSurface(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginCurve" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
/// <see cref="gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int, float[], int, int, int)" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluBeginSurface(GLUnurbs *nobj);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluBeginSurface([In] GLUnurbs nurb);
|
||
#endregion gluBeginSurface([In] GLUnurbs nurb)
|
||
|
||
#region gluBeginTrim([In] GLUnurbs nurb)
|
||
/// <summary>
|
||
/// Delimits a NURBS trimming loop definition.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <b>gluBeginTrim</b> to mark the beginning of a trimming loop, and
|
||
/// <see cref="gluEndTrim" /> to mark the end of a trimming loop. A trimming
|
||
/// loop is a set of oriented curve segments (forming a closed curve) that define
|
||
/// boundaries of a NURBS surface. You include these trimming loops in the
|
||
/// definition of a NURBS surface, between calls to
|
||
/// <see cref="gluBeginSurface" /> and <see cref="gluEndSurface" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The definition for a NURBS surface can contain many trimming loops. For
|
||
/// example, if you wrote a definition for a NURBS surface that resembled a
|
||
/// rectangle with a hole punched out, the definition would contain two trimming
|
||
/// loops. One loop would define the outer edge of the rectangle; the other
|
||
/// would define the hole punched out of the rectangle. The definitions of each
|
||
/// of these trimming loops would be bracketed by a <b>gluBeginTrim</b> and
|
||
/// <see cref="gluEndTrim" /> pair.
|
||
/// </para>
|
||
/// <para>
|
||
/// The definition of a single closed trimming loop can consist of multiple curve
|
||
/// segments, each described as a piecewise linear curve (see
|
||
/// <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />) or as a single NURBS curve (see
|
||
/// <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />), or as a combination of both in any order. The
|
||
/// only library calls that can appear in a trimming loop definition (between the
|
||
/// calls to <b>gluBeginTrim</b> and <see cref="gluEndTrim" />) are
|
||
/// <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" /> and <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The area of the NURBS surface that is displayed is the region in the domain
|
||
/// to the left of the trimming curve as the curve parameter increases. Thus,
|
||
/// the retained region of the NURBS surface is inside a counterclockwise
|
||
/// trimming loop and outside a clockwise trimming loop. For the rectangle
|
||
/// mentioned earlier, the trimming loop for the outer edge of the rectangle runs
|
||
/// counterclockwise, while the trimming loop for the punched-out hole runs
|
||
/// clockwise.
|
||
/// </para>
|
||
/// <para>
|
||
/// If you use more than one curve to define a single trimming loop, the curve
|
||
/// segments must form a closed loop (that is, the endpoint of each curve must be
|
||
/// the starting point of the next curve, and the endpoint of the final curve
|
||
/// must be the starting point of the first curve). If the endpoints of the
|
||
/// curve are sufficiently close together but not exactly coincident, they will
|
||
/// be coerced to match. If the endpoints are not sufficiently close, an error
|
||
/// results (see <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// If a trimming loop definition contains multiple curves, the direction of the
|
||
/// curves must be consistent (that is, the inside must be to the left of all of
|
||
/// the curves). Nested trimming loops are legal as long as the curve
|
||
/// orientations alternate correctly. If trimming curves are self-intersecting,
|
||
/// or intersect one another, an error results.
|
||
/// </para>
|
||
/// <para>
|
||
/// If no trimming information is given for a NURBS surface, the entire surface
|
||
/// is drawn.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// This code fragment defines a trimming loop that consists of one piecewise
|
||
/// linear curve, and two NURBS curves:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginTrim(nobj);
|
||
/// Glu.gluPwlCurve(..., Glu.GLU_MAP1_TRIM_2);
|
||
/// Glu.gluNurbsCurve(..., Glu.GLU_MAP1_TRIM_2);
|
||
/// Glu.gluNurbsCurve(..., Glu.GLU_MAP1_TRIM_3);
|
||
/// Glu.gluEndTrim(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginSurface" />
|
||
/// <seealso cref="gluEndSurface" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluBeginTrim(GLUnurbs *nobj);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluBeginTrim([In] GLUnurbs nurb);
|
||
#endregion gluBeginTrim([In] GLUnurbs nurb)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameterfv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameterfv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[ , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameterfv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[, ,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] byte[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameterfv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[ , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameterfv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[, ,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] double[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[ , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[, ,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] short[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[ , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[, ,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] int[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[ , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameterfv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[, ,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] float[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[ , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[, ,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] ushort[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[ , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[, ,] data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] uint[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] IntPtr data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] IntPtr data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] IntPtr data)
|
||
|
||
#region int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] void *data)
|
||
/// <summary>
|
||
/// Builds a subset of one-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// or 4 or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" /> or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width in pixels of the texture image. This should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for data. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating data in half until size 1×1 is reached. At each level, each texel
|
||
/// in the halved mipmap level is an average of the corresponding two texels in
|
||
/// the larger mipmap level. <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load
|
||
/// these mipmap levels from <i>min</i> to <i>max</i>. If <i>max</i> is larger
|
||
/// than the highest mipmap level for the texture of the specified size, then a
|
||
/// GLU error code is returned (see <see cref="gluErrorString" />) and nothing is
|
||
/// loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, the following
|
||
/// levels are possible: 16×1, 8×1, 4×1, 2×1, 1×1. These correspond to levels 2
|
||
/// through 6 respectively. If <i>min</i> is 3 and <i>max</i> is 5, then only
|
||
/// mipmap levels 8×1, 4×1 and 2×1 are loaded. However, if <i>max</i> is 7 then
|
||
/// an error is returned and nothing is loaded since <i>max</i> is larger than
|
||
/// the highest mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2((width)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>level</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] void* data);
|
||
#endregion int gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int min, int max, [In] void *data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[ , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[ , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[, ,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] byte[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[ , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[ , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[, ,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] double[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[ , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[ , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[, ,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] short[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[ , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[ , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[, ,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] int[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[ , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[ , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[, ,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] float[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[ , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[ , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[, ,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] ushort[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[ , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[ , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[, ,] data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] uint[ , , ] data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] IntPtr data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] IntPtr data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] IntPtr data)
|
||
|
||
#region int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] void *data)
|
||
/// <summary>
|
||
/// Builds a one-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_1D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" />, or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild1DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> of <i>data</i> is checked to see if it is a power
|
||
/// of 2. If not, a copy of <i>data</i> is scaled up or down to the nearest
|
||
/// power of 2. (If <i>width</i> is exactly between powers of 2, then the copy
|
||
/// of <i>data</i> will scale upwards.) This copy will be used for subsequent
|
||
/// mipmapping operations described below. For example, if <i>width</i> is 57
|
||
/// then a copy of <i>data</i> will scale up to 64 before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, width
|
||
/// is continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half until size 1×1 is reached. At each level, each texel in the halved
|
||
/// mipmap level is an average of the corresponding two texels in the larger
|
||
/// mipmap level.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>glTexImage1D</b> is called to load each of these mipmap levels. Level 0
|
||
/// is a copy of <i>data</i>. The highest level is <c>log2(width)</c>. For
|
||
/// example, if <i>width</i> is 64 and the implementation can store a texture of
|
||
/// this size, the following mipmap levels are built: 64×1, 32×1, 16×1, 8×1, 4×1,
|
||
/// 2×1 and 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>type</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for the <i>data</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that there is no direct way of querying the maximum level. This can be
|
||
/// derived indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First,
|
||
/// query for the width actually used at level 0. (The width may not be equal to
|
||
/// <i>width</i> since proxy textures might have scaled it to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(width)</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater, and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i> or <i>type</i>
|
||
/// are not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] void* data);
|
||
#endregion int gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, [In] void *data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[ , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[, ,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] byte[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[ , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[, ,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] double[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[ , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[, ,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] short[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[ , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[, ,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] int[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[ , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[, ,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] float[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[ , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[, ,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] ushort[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[ , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[, ,] data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] uint[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] IntPtr data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] IntPtr data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] IntPtr data)
|
||
|
||
#region int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] void *data)
|
||
/// <summary>
|
||
/// Builds a subset of two-dimensional mipmap levels.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies the width, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height, in pixels, of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding four texels in the larger mipmap level. (In the case of
|
||
/// rectangular images, the decimation will ultimately reach an N×1 or 1×N
|
||
/// configuration. Here, two texels are averaged instead.)
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load these mipmap levels from
|
||
/// <i>min</i> to <i>max</i>. If <i>max</i> is larger than the highest mipmap
|
||
/// level for the texture of the specified size, then a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16 and <i>height</i> is
|
||
/// 8, the following levels are possible: 16×8, 8×4, 4×2, 2×1, 1×1. These
|
||
/// correspond to levels 2 through 6 respectively. If <i>min</i> is 3 and
|
||
/// <i>max</i> is 5, then only mipmap levels 8×4, 4×2 and 2×1 are loaded.
|
||
/// However, if <i>max</i> is 7 then an error is returned and nothing is loaded
|
||
/// since <i>max</i> is larger than the highest mipmap level which is, in this
|
||
/// case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] void* data);
|
||
#endregion int gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int min, int max, [In] void *data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[ , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[ , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[, ,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] byte[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[ , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[ , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[, ,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] double[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[ , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[ , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[, ,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] short[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[ , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[ , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[, ,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] int[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[ , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[ , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[, ,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] float[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[ , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[ , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[, ,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] ushort[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[ , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[ , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[, ,] data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] uint[ , , ] data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] IntPtr data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] IntPtr data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] IntPtr data)
|
||
|
||
#region int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] void *data)
|
||
/// <summary>
|
||
/// Builds a two-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_2D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />,
|
||
/// <see cref="Gl.GL_INTENSITY" />, <see cref="Gl.GL_INTENSITY4" />,
|
||
/// <see cref="Gl.GL_INTENSITY8" />, <see cref="Gl.GL_INTENSITY12" />,
|
||
/// <see cref="Gl.GL_INTENSITY16" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_R3_G3_B2" />, <see cref="Gl.GL_RGB4" />,
|
||
/// <see cref="Gl.GL_RGB5" />, <see cref="Gl.GL_RGB8" />,
|
||
/// <see cref="Gl.GL_RGB10" />, <see cref="Gl.GL_RGB12" />,
|
||
/// <see cref="Gl.GL_RGB16" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_RGBA2" />, <see cref="Gl.GL_RGBA4" />,
|
||
/// <see cref="Gl.GL_RGB5_A1" />, <see cref="Gl.GL_RGBA8" />,
|
||
/// <see cref="Gl.GL_RGB10_A2" />, <see cref="Gl.GL_RGBA12" /> or
|
||
/// <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild2DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i> and <i>height</i> of <i>data</i> are checked to
|
||
/// see if they are a power of 2. If not, a copy of <i>data</i> (not <i>data</i>
|
||
/// itself), is scaled up or down to the nearest power of 2. This copy will be
|
||
/// used for subsequent mipmapping operations described below. (If <i>width</i>
|
||
/// or <i>height</i> is exactly between powers of 2, then the copy of <i>data</i>
|
||
/// will scale upwards.) For example, if <i>width</i> is 57 and <i>height</i> is
|
||
/// 23 then a copy of <i>data</i> will scale up to 64 in <i>width</i> and down to
|
||
/// 16 in depth, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, both
|
||
/// dimensions are continually halved until it fits. (If the OpenGL version is
|
||
/// <= 1.0, both maximum texture dimensions are clamped to the value returned
|
||
/// by <see cref="Gl.glGetIntegerv(int, IntPtr)" /> with the argument
|
||
/// <see cref="Gl.GL_MAX_TEXTURE_SIZE" />.)
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along both dimensions until size 1×1 is reached. At each level, each
|
||
/// texel in the halved mipmap level is an average of the corresponding four
|
||
/// texels in the larger mipmap level. (In the case of rectangular images, the
|
||
/// decimation will ultimately reach an N×1 or 1×N configuration. Here, two
|
||
/// texels are averaged instead.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height))</c>. For example, if <i>width</i> is 64 and
|
||
/// <i>height</i> is 16 and the implementation can store a texture of this size,
|
||
/// the following mipmap levels are built: 64×16, 32×8, 16×4, 8×2, 4×1, 2×1 and
|
||
/// 1×1. These correspond to levels 0 through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width and height actually used at level 0. (The width and height may not
|
||
/// be equal to <i>width</i> and <i>height</i> respectively since proxy textures
|
||
/// might have scaled them to fit the implementation.) Then the maximum level
|
||
/// can be derived from the formula <c>log2(max(width,height))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater and if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i> or <i>height</i>
|
||
/// is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] void* data);
|
||
#endregion int gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, [In] void *data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[ , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[, ,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] byte[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[ , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[, ,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] double[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[ , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[, ,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] short[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[ , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[, ,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] int[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[ , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[, ,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] float[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[ , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[, ,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] ushort[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[ , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[ , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[, ,] data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] uint[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] IntPtr data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] IntPtr data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] IntPtr data)
|
||
|
||
#region int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] void *data)
|
||
/// <summary>
|
||
/// Builds a subset of three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth of the texture image. Should be a power of 2.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="level">
|
||
/// Specifies the mipmap level of the image data.
|
||
/// </param>
|
||
/// <param name="min">
|
||
/// Specifies the minimum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="max">
|
||
/// Specifies the maximum mipmap level to pass to <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A series of mipmap levels from <i>min</i> to <i>max</i> is built by
|
||
/// decimating <i>data</i> in half along both dimensions until size 1×1×1 is
|
||
/// reached. At each level, each texel in the halved mipmap level is an average
|
||
/// of the corresponding eight texels in the larger mipmap level. (If exactly
|
||
/// one of the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.) <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// is called to load these mipmap levels from <i>min</i> to <i>max</i>. If
|
||
/// <i>max</i> is larger than the highest mipmap level for the texture of the
|
||
/// specified size, then a GLU error code is returned (see
|
||
/// <see cref="gluErrorString" />) and nothing is loaded.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if <i>level</i> is 2 and <i>width</i> is 16, <i>height</i> is 8
|
||
/// and <i>depth</i> is 4, the following levels are possible: 16×8×4, 8×4×2,
|
||
/// 4×2×1, 2×1×1, 1×1×1. These correspond to levels 2 through 6 respectively.
|
||
/// If <i>min</i> is 3 and <i>max</i> is 5, then only mipmap levels 8×4×2,
|
||
/// 4×2×1 and 2×1×1 are loaded. However, if <i>max</i> is 7 then an error is
|
||
/// returned and nothing is loaded since <i>max</i> is larger than the highest
|
||
/// mipmap level which is, in this case, 6.
|
||
/// </para>
|
||
/// <para>
|
||
/// The highest mipmap level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth)*(2^level))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmapLevels</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>level</i> > <i>min</i>,
|
||
/// <i>min</i> < 0, <i>max</i> < <i>min</i> or <i>max</i> is > the
|
||
/// highest mipmap level for <i>data</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] void* data);
|
||
#endregion int gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int min, int max, [In] void *data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[ , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[ , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[, ,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] byte[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[ , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[ , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[, ,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] double[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[ , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[ , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[, ,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] short[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[ , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[ , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[, ,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] int[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[ , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[ , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[, ,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] float[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[ , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[ , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[, ,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] ushort[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[ , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[ , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[ , , ] data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[, ,] data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] uint[ , , ] data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] IntPtr data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] IntPtr data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] IntPtr data)
|
||
|
||
#region int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] void *data)
|
||
/// <summary>
|
||
/// Builds a three-dimensional mipmap.
|
||
/// </summary>
|
||
/// <param name="target">
|
||
/// Specifies the target texture. Must be <see cref="Gl.GL_TEXTURE_3D" />.
|
||
/// </param>
|
||
/// <param name="internalFormat">
|
||
/// Requests the internal storage format of the texture image. Must be 1, 2, 3,
|
||
/// 4, or one of the following symbolic constants: <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_ALPHA4" />, <see cref="Gl.GL_ALPHA8" />,
|
||
/// <see cref="Gl.GL_ALPHA12" />, <see cref="Gl.GL_ALPHA16" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, <see cref="Gl.GL_LUMINANCE4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8" />, <see cref="Gl.GL_LUMINANCE12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16" />, <see cref="Gl.GL_LUMINANCE_ALPHA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE4_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE6_ALPHA2" />,
|
||
/// <see cref="Gl.GL_LUMINANCE8_ALPHA8" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA4" />,
|
||
/// <see cref="Gl.GL_LUMINANCE12_ALPHA12" />,
|
||
/// <see cref="Gl.GL_LUMINANCE16_ALPHA16" />, <see cref="Gl.GL_INTENSITY" />,
|
||
/// <see cref="Gl.GL_INTENSITY4" />, <see cref="Gl.GL_INTENSITY8" />,
|
||
/// <see cref="Gl.GL_INTENSITY12" />, <see cref="Gl.GL_INTENSITY16" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_R3_G3_B2" />,
|
||
/// <see cref="Gl.GL_RGB4" />, <see cref="Gl.GL_RGB5" />,
|
||
/// <see cref="Gl.GL_RGB8" />, <see cref="Gl.GL_RGB10" />,
|
||
/// <see cref="Gl.GL_RGB12" />, <see cref="Gl.GL_RGB16" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_RGBA2" />,
|
||
/// <see cref="Gl.GL_RGBA4" />, <see cref="Gl.GL_RGB5_A1" />,
|
||
/// <see cref="Gl.GL_RGBA8" />, <see cref="Gl.GL_RGB10_A2" />,
|
||
/// <see cref="Gl.GL_RGBA12" />, or <see cref="Gl.GL_RGBA16" />.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// Specifies, in pixels, the width in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies, in pixels, the height in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="depth">
|
||
/// Specifies, in pixels, the depth in pixels of the texture image.
|
||
/// </param>
|
||
/// <param name="format">
|
||
/// Specifies the format of the pixel data. Must be one of
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_DEPTH_COMPONENT" />,
|
||
/// <see cref="Gl.GL_RED" />, <see cref="Gl.GL_GREEN" />,
|
||
/// <see cref="Gl.GL_BLUE" />, <see cref="Gl.GL_ALPHA" />,
|
||
/// <see cref="Gl.GL_RGB" />, <see cref="Gl.GL_RGBA" />,
|
||
/// <see cref="Gl.GL_BGR" />, <see cref="Gl.GL_BGRA" />,
|
||
/// <see cref="Gl.GL_LUMINANCE" />, or <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// Specifies the data type for <i>data</i>. Must be one of:
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// Specifies a pointer to the image data in memory.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// Initially, the <i>width</i>, <i>height</i> and <i>depth</i> of <i>data</i>
|
||
/// are checked to see if they are a power of two. If not, a copy of <i>data</i>
|
||
/// (not <i>data</i> itself), is scaled up or down to the nearest power of two.
|
||
/// This copy will be used for subsequent mipmapping operations described below.
|
||
/// (If <i>width</i>, <i>height</i> or <i>depth</i> is exactly between powers of
|
||
/// 2, then the copy of <i>data</i> will scale upwards.) For example, if
|
||
/// <i>width</i> is 57, <i>height</i> is 23 and <i>depth</i> is 24 then a copy of
|
||
/// <i>data</i> will scale up to 64 in <i>width</i>, down to 16 in <i>height</i>
|
||
/// and up to 32 in <i>depth</i>, before mipmapping takes place.
|
||
/// </para>
|
||
/// <para>
|
||
/// Then, proxy textures (see <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />) are used to
|
||
/// determine if the implementation can fit the requested texture. If not, all
|
||
/// three dimensions are continually halved until it fits.
|
||
/// </para>
|
||
/// <para>
|
||
/// Next, a series of mipmap levels is built by decimating a copy of <i>data</i>
|
||
/// in half along all three dimensions until size 1×1×1 is reached. At each
|
||
/// level, each texel in the halved mipmap level is an average of the
|
||
/// corresponding eight texels in the larger mipmap level. (If exactly one of
|
||
/// the dimensions is 1, four texels are averaged. If exactly two of the
|
||
/// dimensions are 1, two texels are averaged.)
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" /> is called to load each of these mipmap levels.
|
||
/// Level 0 is a copy of <i>data</i>. The highest level is
|
||
/// <c>log2(max(width,height,depth))</c>. For example, if <i>width</i> is 64,
|
||
/// <i>height</i> is 16 and <i>depth</i> is 32, and the implementation can store
|
||
/// a texture of this size, the following mipmap levels are built: 64×16×32,
|
||
/// 32×8×16, 16×4×8, 8×2×4, 4×1×2, 2×1×1 and 1×1×1. These correspond to levels 0
|
||
/// through 6, respectively.
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for <i>format</i> parameter. See the
|
||
/// <see cref="Gl.glDrawPixels(int, int, int, int, object)" /> reference page for a description of the
|
||
/// acceptable values for <i>type</i> parameter.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// There is no direct way of querying the maximum level. This can be derived
|
||
/// indirectly via <see cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />. First, query for
|
||
/// the width, height and depth actually used at level 0. (The width, height
|
||
/// and depth may not be equal to <i>width</i>, <i>height</i> and <i>depth</i>
|
||
/// respectively since proxy textures might have scaled them to fit the
|
||
/// implementation.) Then the maximum level can be derived from the formula
|
||
/// <c>log2(max(width,height,depth))</c>.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluBuild3DMipmaps</b> is only available if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>width</i>, <i>height</i>,
|
||
/// or <i>depth</i> is < 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>internalFormat</i>,
|
||
/// <i>format</i>, or <i>type</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>type</i> is
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexImage(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glGetTexLevelParameteriv(int, int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glTexImage1D(int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage2D(int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glTexImage3D(int, int, int, int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmapLevels(int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmapLevels(int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmapLevels(int, int, int, int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] void* data);
|
||
#endregion int gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, [In] void *data)
|
||
|
||
#region int gluCheckExtension(string extensionName, string extensionString)
|
||
/// <summary>
|
||
/// Determines if an extension name is supported.
|
||
/// </summary>
|
||
/// <param name="extensionName">
|
||
/// Specifies an extension name.
|
||
/// </param>
|
||
/// <param name="extensionString">
|
||
/// Specifies a space-separated list of extension names supported.
|
||
/// </param>
|
||
/// <returns>
|
||
/// Returns <see cref="Gl.GL_TRUE" /> if <i>extensionName</i> is supported
|
||
/// otherwise <see cref="Gl.GL_FALSE" /> is returned.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluCheckExtension</b> is used to check for the presence for OpenGL, GLU or
|
||
/// GLX extension names by passing the extension strings returned by
|
||
/// <see cref="Gl.glGetString" />, <see cref="gluGetString" />,
|
||
/// /*see cref="glXGetClientString" />*/, /*see cref="glXQueryExtensionsString" />*/,
|
||
/// or /*see cref="glXQueryServerString" />*/, respectively, as
|
||
/// <i>extensionString</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Returns <see cref="Gl.GL_TRUE" /> if <i>extensionName</i> is supported
|
||
/// otherwise <see cref="Gl.GL_FALSE" /> is returned.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Cases where one extension name is a substring of another are correctly
|
||
/// handled.
|
||
/// </para>
|
||
/// <para>
|
||
/// There may or may not be leading or trailing blanks in <i>extensionString</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Extension names should not contain embedded spaces.
|
||
/// </para>
|
||
/// <para>
|
||
/// All strings are null-terminated.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glGetString" />
|
||
/// <seealso cref="gluGetString" />
|
||
/// /*seealso cref="glXGetClientString" />*/
|
||
/// /*seealso cref="glXQueryExtensionsString" />*/
|
||
/// /*seealso cref="glXQueryServerString" />*/
|
||
// GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluCheckExtension(string extensionName, string extensionString);
|
||
#endregion int gluCheckExtension(string extensionName, string extensionString)
|
||
|
||
#region gluCylinder([In] GLUquadric quad, double baseRadius, double topRadius, double height, int slices, int stacks)
|
||
/// <summary>
|
||
/// Draws a cylinder.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// Specifies the quadrics object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="baseRadius">
|
||
/// Specifies the radius of the cylinder at <c>z = 0</c>.
|
||
/// </param>
|
||
/// <param name="topRadius">
|
||
/// Specifies the radius of the cylinder at <c>z = height</c>. If <i>top</i> is
|
||
/// set to 0, this subroutine generates a cone.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// Specifies the height of the cylinder.
|
||
/// </param>
|
||
/// <param name="slices">
|
||
/// Specifies the number of subdivisions around the z axis.
|
||
/// </param>
|
||
/// <param name="stacks">
|
||
/// Specifies the number of subdivisions along the z axis.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluCylinder</b> 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that if <i>top</i> is set to 0.0, this routine generates a cone.
|
||
/// </para>
|
||
/// <para>
|
||
/// If the orientation is set to <see cref="GLU_OUTSIDE" /> (with
|
||
/// <see cref="gluQuadricOrientation" />), then any generated normals point away
|
||
/// from the z axis. Otherwise, they point toward the z axis.
|
||
/// </para>
|
||
/// <para>
|
||
/// If texturing is turned on using the <see cref="gluQuadricTexture" />
|
||
/// subroutine, texture coordinates are generated so that t ranges linearly from
|
||
/// 0.0 at z = 0 to 1.0 at z = height, and s ranges from 0.0 at the +y axis to
|
||
/// 0.25 at the +x axis, as well as up to 0.5 at the -y axis and 0.75 at the
|
||
/// -x axis, then back to 1.0 at the +y axis.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluDisk" />
|
||
/// <seealso cref="gluNewQuadric" />
|
||
/// <seealso cref="gluPartialDisk" />
|
||
/// <seealso cref="gluQuadricOrientation" />
|
||
/// <seealso cref="gluQuadricTexture" />
|
||
/// <seealso cref="gluSphere" />
|
||
// void APIENTRY gluCylinder(GLUquadric *qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluCylinder([In] GLUquadric quad, double baseRadius, double topRadius, double height, int slices, int stacks);
|
||
#endregion gluCylinder([In] GLUquadric quad, double baseRadius, double topRadius, double height, int slices, int stacks)
|
||
|
||
#region gluDeleteNurbsRenderer([In] GLUnurbs nurb)
|
||
/// <summary>
|
||
/// Destroys a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object to be destroyed (created with
|
||
/// <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluDeleteNurbsRenderer</b> destroys the NURBS object (which was created with
|
||
/// <see cref="gluNewNurbsRenderer" />) and frees any memory it uses. Once
|
||
/// <b>gluDeleteNurbsRenderer</b> has been called, <i>nurb</i> cannot be used again.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
// void APIENTRY gluDeleteNurbsRenderer(GLUnurbs *nobj);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluDeleteNurbsRenderer([In] GLUnurbs nurb);
|
||
#endregion gluDeleteNurbsRenderer([In] GLUnurbs nurb)
|
||
|
||
#region gluDeleteQuadric([In] GLUquadric quad)
|
||
/// <summary>
|
||
/// Destroys a quadrics object.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// The quadric object to be destroyed (created with
|
||
/// <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluDeleteQuadric</b> destroys the quadrics object (created with
|
||
/// <see cref="gluNewQuadric" />) and frees any memory it uses. Once
|
||
/// <b>gluDeleteQuadric</b> has been called, <i>quad</i> cannot be used again.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewQuadric" />
|
||
// void APIENTRY gluDeleteQuadric(GLUquadric *state);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluDeleteQuadric([In] GLUquadric quad);
|
||
#endregion gluDeleteQuadric([In] GLUquadric quad)
|
||
|
||
#region gluDeleteTess([In] GLUtesselator tess)
|
||
/// <summary>
|
||
/// Destroys a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object to destroy (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluDeleteTess</b> destroys the indicated tessellation object (which was
|
||
/// created with <see cref="gluNewTess" />) and frees any memory that it used.
|
||
/// Once <b>gluDeleteTess</b> has been called, <i>tess</i> cannot be used again.
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginPolygon" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// void APIENTRY gluDeleteTess(GLUtesselator *tess);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluDeleteTess([In] GLUtesselator tess);
|
||
#endregion gluDeleteTess([In] GLUtesselator tess)
|
||
|
||
#region gluDisk([In] GLUquadric quad, double innerRadius, double outerRadius, int slices, int loops)
|
||
/// <summary>
|
||
/// Draws a disk.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// The quadric object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="innerRadius">
|
||
/// The inner radius of the disk (may be zero).
|
||
/// </param>
|
||
/// <param name="outerRadius">
|
||
/// The outer radius of the disk.
|
||
/// </param>
|
||
/// <param name="slices">
|
||
/// The number of subdivisions around the z-axis.
|
||
/// </param>
|
||
/// <param name="loops">
|
||
/// The number of concentric rings about the origin into which the disk is subdivided.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluDisk</b> renders a disk on the z = 0 plane. The disk has a radius of
|
||
/// <i>outerRadius</i>, and contains a concentric circular hole with a radius of
|
||
/// <i>innerRadius</i>. If <i>innerRadius</i> 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 <i>slices</i> and
|
||
/// <i>loops</i>, respectively).
|
||
/// </para>
|
||
/// <para>
|
||
/// With respect to orientation, the +z side of the disk is considered to be
|
||
/// "outside" (see <see cref="gluQuadricOrientation" />). This means that if the
|
||
/// orientation is set to <see cref="GLU_OUTSIDE" />, then any normals generated
|
||
/// point along the +z axis. Otherwise, they point along the -z axis.
|
||
/// </para>
|
||
/// <para>
|
||
/// If texturing has been turned on (with <see cref="gluQuadricTexture" />),
|
||
/// texture coordinates are generated linearly such that where r = outerRadius,
|
||
/// the value at (r, 0, 0) is (1, 0.5), at (0, r, 0) it is (0.5, 1), at
|
||
/// (-r, 0, 0) it is (0, 0.5), and at (0, -r, 0) it is (0.5, 0).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluCylinder" />
|
||
/// <seealso cref="gluNewQuadric" />
|
||
/// <seealso cref="gluPartialDisk" />
|
||
/// <seealso cref="gluQuadricOrientation" />
|
||
/// <seealso cref="gluQuadricTexture" />
|
||
/// <seealso cref="gluSphere" />
|
||
// void APIENTRY gluDisk(GLUquadric *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluDisk([In] GLUquadric quad, double innerRadius, double outerRadius, int slices, int loops);
|
||
#endregion gluDisk([In] GLUquadric quad, double innerRadius, double outerRadius, int slices, int loops)
|
||
|
||
#region gluEndCurve([In] GLUnurbs nurb)
|
||
/// <summary>
|
||
/// Delimits a Non-Uniform Rational B-Spline (NURBS) curve definition.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <see cref="gluBeginCurve" /> to mark the beginning of a NURBS curve
|
||
/// definition. After calling <see cref="gluBeginCurve" />, make one or more
|
||
/// calls to <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" /> to define the attributes of the curve.
|
||
/// Exactly one of the calls to <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" /> must have a curve
|
||
/// type of <see cref="Gl.GL_MAP1_VERTEX_3" /> or
|
||
/// <see cref="Gl.GL_MAP1_VERTEX_4" />. To mark the end of the NURBS curve
|
||
/// definition, call <b>gluEndCurve</b>.
|
||
/// </para>
|
||
/// <para>
|
||
/// OpenGL evaluators are used to render the NURBS curve as a series of line
|
||
/// segments. Evaluator state is preserved during rendering with
|
||
/// <c>Gl.glPushAttrib(Gl.GL_EVAL_BIT)</c> and <c>Gl.glPopAttrib</c>. For
|
||
/// information on exactly what state these calls preserve, see
|
||
/// <see cref="Gl.glPushAttrib" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following commands render a textured NURBS curve with normals; texture
|
||
/// coordinates and normals are also specified as NURBS curves:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginCurve(nobj);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_NORMAL);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_VERTEX_4);
|
||
/// Glu.gluEndCurve(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glPopAttrib" />
|
||
/// <seealso cref="Gl.glPushAttrib" />
|
||
/// <seealso cref="gluBeginSurface" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
// void APIENTRY gluEndCurve(GLUnurbs *nobj);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluEndCurve([In] GLUnurbs nurb);
|
||
#endregion gluEndCurve([In] GLUnurbs nurb)
|
||
|
||
#region gluEndPolygon([In] GLUtesselator tess)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <see cref="gluBeginPolygon" /> delimits the definition of a nonconvex
|
||
/// polygon. To define such a polygon, first call
|
||
/// <see cref="gluBeginPolygon" />. Then define the contours of the polygon by
|
||
/// calling <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" /> for each vertex and
|
||
/// <see cref="gluNextContour" /> to start each new contour. Finally, call
|
||
/// <b>gluEndPolygon</b> to signal the end of the definition. See the
|
||
/// <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" /> and <see cref="gluNextContour" /> reference
|
||
/// pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <b>gluEndPolygon</b> is called, the polygon is tessellated, and the
|
||
/// resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// This command is obsolete and is provided for backward compatibility only.
|
||
/// Calls to <see cref="gluBeginPolygon" /> are mapped to
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> followed by
|
||
/// <see cref="gluTessBeginContour" />. Calls to <b>gluEndPolygon</b> are mapped
|
||
/// to <see cref="gluTessEndContour" /> followed by
|
||
/// <see cref="gluTessEndPolygon" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// A quadrilateral with a triangular hole in it can be described like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginPolygon(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluNextContour(tobj, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluNextContour" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluEndPolygon(GLUtesselator *tess);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluEndPolygon([In] GLUtesselator tess);
|
||
#endregion gluEndPolygon([In] GLUtesselator tess)
|
||
|
||
#region gluEndSurface([In] GLUnurbs nurb)
|
||
/// <summary>
|
||
/// Delimits a NURBS surface definition.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <see cref="gluBeginSurface" /> to mark the beginning of a NURBS surface
|
||
/// definition. After calling <see cref="gluBeginSurface" />, make one or more
|
||
/// calls to <see cref="gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int, float[], int, int, int)" /> to define the attributes of the
|
||
/// surface. Exactly one of these calls to <see cref="gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int, float[], int, int, int)" /> must
|
||
/// have a surface type of <see cref="Gl.GL_MAP2_VERTEX_3" /> or
|
||
/// <see cref="Gl.GL_MAP2_VERTEX_4" />. To mark the end of the NURBS surface
|
||
/// definition, call <b>gluEndSurface</b>.
|
||
/// </para>
|
||
/// <para>
|
||
/// Trimming of NURBS surfaces is supported with <see cref="gluBeginTrim" />,
|
||
/// <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />, <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />, and
|
||
/// <see cref="gluEndTrim" />. See the <see cref="gluBeginTrim" /> reference
|
||
/// page for details.
|
||
/// </para>
|
||
/// <para>
|
||
/// OpenGL evaluators are used to render the NURBS surface as a set of polygons.
|
||
/// Evaluator state is preserved during rendering with
|
||
/// <c>Gl.glPushAttrib(Gl.GL_EVAL_BIT)</c> and <c>Gl.glPopAttrib()</c>. See the
|
||
/// <see cref="Gl.glPushAttrib" /> reference page for details on exactly what
|
||
/// state these calls preserve.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following commands render a textured NURBS surface with normals; the
|
||
/// texture coordinates and normals are also described as NURBS surfaces:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginSurface(nobj);
|
||
/// Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_NORMAL);
|
||
/// Glu.gluNurbsSurface(nobj, ..., Gl.GL_MAP2_VERTEX_4);
|
||
/// Glu.gluEndSurface(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginCurve" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
/// <see cref="gluNurbsSurface(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int, float[], int, int, int)" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluEndSurface(GLUnurbs *nobj);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluEndSurface([In] GLUnurbs nurb);
|
||
#endregion gluEndSurface([In] GLUnurbs nurb)
|
||
|
||
#region gluEndTrim([In] GLUnurbs nurb)
|
||
/// <summary>
|
||
/// Delimits a NURBS trimming loop definition.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <see cref="gluBeginTrim" /> to mark the beginning of a trimming loop, and
|
||
/// <b>gluEndTrim</b> to mark the end of a trimming loop. A trimming loop is a
|
||
/// set of oriented curve segments (forming a closed curve) that define
|
||
/// boundaries of a NURBS surface. You include these trimming loops in the
|
||
/// definition of a NURBS surface, between calls to
|
||
/// <see cref="gluBeginSurface" /> and <see cref="gluEndSurface" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The definition for a NURBS surface can contain many trimming loops. For
|
||
/// example, if you wrote a definition for a NURBS surface that resembled a
|
||
/// rectangle with a hole punched out, the definition would contain two trimming
|
||
/// loops. One loop would define the outer edge of the rectangle; the other
|
||
/// would define the hole punched out of the rectangle. The definitions of each
|
||
/// of these trimming loops would be bracketed by a <see cref="gluBeginTrim" />
|
||
/// and <b>gluEndTrim</b> pair.
|
||
/// </para>
|
||
/// <para>
|
||
/// The definition of a single closed trimming loop can consist of multiple curve
|
||
/// segments, each described as a piecewise linear curve (see
|
||
/// <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />) or as a single NURBS curve (see
|
||
/// <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />), or as a combination of both in any order. The
|
||
/// only library calls that can appear in a trimming loop definition (between the
|
||
/// calls to <see cref="gluBeginTrim" /> and <b>gluEndTrim</b> are
|
||
/// <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" /> and <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The area of the NURBS surface that is displayed is the region in the domain
|
||
/// to the left of the trimming curve as the curve parameter increases. Thus,
|
||
/// the retained region of the NURBS surface is inside a counterclockwise
|
||
/// trimming loop and outside a clockwise trimming loop. For the rectangle
|
||
/// mentioned earlier, the trimming loop for the outer edge of the rectangle runs
|
||
/// counterclockwise, while the trimming loop for the punched-out hole runs
|
||
/// clockwise.
|
||
/// </para>
|
||
/// <para>
|
||
/// If you use more than one curve to define a single trimming loop, the curve
|
||
/// segments must form a closed loop (that is, the endpoint of each curve must be
|
||
/// the starting point of the next curve, and the endpoint of the final curve
|
||
/// must be the starting point of the first curve). If the endpoints of the
|
||
/// curve are sufficiently close together but not exactly coincident, they will
|
||
/// be coerced to match. If the endpoints are not sufficiently close, an error
|
||
/// results (see <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// If a trimming loop definition contains multiple curves, the direction of the
|
||
/// curves must be consistent (that is, the inside must be to the left of all of
|
||
/// the curves). Nested trimming loops are legal as long as the curve
|
||
/// orientations alternate correctly. If trimming curves are self-intersecting,
|
||
/// or intersect one another, an error results.
|
||
/// </para>
|
||
/// <para>
|
||
/// If no trimming information is given for a NURBS surface, the entire surface
|
||
/// is drawn.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// This code fragment defines a trimming loop that consists of one piecewise
|
||
/// linear curve, and two NURBS curves:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginTrim(nobj);
|
||
/// Glu.gluPwlCurve(..., Glu.GLU_MAP1_TRIM_2);
|
||
/// Glu.gluNurbsCurve(..., Glu.GLU_MAP1_TRIM_2);
|
||
/// Glu.gluNurbsCurve(..., Glu.GLU_MAP1_TRIM_3);
|
||
/// Glu.gluEndTrim(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginSurface" />
|
||
/// <seealso cref="gluEndSurface" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluEndTrim(GLUnurbs *nobj);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluEndTrim([In] GLUnurbs nurb);
|
||
#endregion gluEndTrim([In] GLUnurbs nurb)
|
||
|
||
#region string gluErrorString(int errorCode)
|
||
/// <summary>
|
||
/// Produces an error string from a GL or GLU error code.
|
||
/// </summary>
|
||
/// <param name="errorCode">
|
||
/// An OpenGL or GLU error code.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A string representation of the error.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluErrorString</b> produces an error string from a GL or GLU error code.
|
||
/// The string is in ISO Latin 1 format. For example,
|
||
/// <c>gluErrorString(Gl.GL_OUT_OF_MEMORY)</c> returns the string 'out of
|
||
/// memory'.
|
||
/// </para>
|
||
/// <para>
|
||
/// The standard GLU error codes are <see cref="GLU_INVALID_ENUM" />,
|
||
/// <see cref="GLU_INVALID_VALUE" />, and <see cref="GLU_OUT_OF_MEMORY" />.
|
||
/// Certain other GLU functions can return specialized error codes through
|
||
/// callbacks. See the <see cref="Gl.glGetError" /> reference page for the list
|
||
/// of GL error codes.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <c>NULL</c> is returned if <i>errorCode</i> is not a valid GL or GLU error
|
||
/// code.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glGetError" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
/// <seealso cref="gluQuadricCallback" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// const GLubyte* APIENTRY gluErrorString(GLenum errCode);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluErrorString"), SuppressUnmanagedCodeSecurity]
|
||
private static extern IntPtr gluErrorStringUnsafe(int errorCode);
|
||
|
||
public static string gluErrorString(int errorCode)
|
||
{
|
||
return Marshal.PtrToStringAnsi(gluErrorStringUnsafe(errorCode));
|
||
}
|
||
#endregion string gluErrorString(int errorCode)
|
||
|
||
#region string gluErrorStringWIN(int errorCode)
|
||
/// <summary>
|
||
/// Produces an error string from a GL or GLU error code.
|
||
/// </summary>
|
||
/// <param name="errorCode">
|
||
/// An OpenGL or GLU error code.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A string representation of the error.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluErrorStringWIN</b> produces an error string from a GL or GLU error
|
||
/// code. The string is in UNICODE format. For example,
|
||
/// <c>gluErrorStringWIN(Gl.GL_OUT_OF_MEMORY)</c> returns the string 'out of
|
||
/// memory'.
|
||
/// </para>
|
||
/// <para>
|
||
/// The standard GLU error codes are <see cref="GLU_INVALID_ENUM" />,
|
||
/// <see cref="GLU_INVALID_VALUE" />, and <see cref="GLU_OUT_OF_MEMORY" />.
|
||
/// Certain other GLU functions can return specialized error codes through
|
||
/// callbacks. See the <see cref="Gl.glGetError" /> reference page for the list
|
||
/// of GL error codes.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <c>NULL</c> is returned if <i>errorCode</i> is not a valid GL or GLU error
|
||
/// code.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glGetError" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
/// <seealso cref="gluQuadricCallback" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// const GLubyte* APIENTRY gluErrorStringWIN(GLenum errCode);
|
||
public static string gluErrorStringWIN(int errorCode)
|
||
{
|
||
return gluErrorUnicodeStringEXT(errorCode);
|
||
}
|
||
#endregion string gluErrorStringWIN(int errorCode)
|
||
|
||
#region string gluErrorUnicodeStringEXT(int errorCode)
|
||
/// <summary>
|
||
/// Produces an error string from a GL or GLU error code.
|
||
/// </summary>
|
||
/// <param name="errorCode">
|
||
/// An OpenGL or GLU error code.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A Unicode string representation of the error.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluErrorString</b> produces an error string from a GL or GLU error code.
|
||
/// The string is in UNICODE format. For example,
|
||
/// <c>gluErrorString(Gl.GL_OUT_OF_MEMORY)</c> returns the string 'out of
|
||
/// memory'.
|
||
/// </para>
|
||
/// <para>
|
||
/// The standard GLU error codes are <see cref="GLU_INVALID_ENUM" />,
|
||
/// <see cref="GLU_INVALID_VALUE" />, and <see cref="GLU_OUT_OF_MEMORY" />.
|
||
/// Certain other GLU functions can return specialized error codes through
|
||
/// callbacks. See the <see cref="Gl.glGetError" /> reference page for the list
|
||
/// of GL error codes.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <c>NULL</c> is returned if <i>errorCode</i> is not a valid GL or GLU error
|
||
/// code.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glGetError" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
/// <seealso cref="gluQuadricCallback" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// const wchar_t* APIENTRY gluErrorUnicodeStringEXT(GLenum errCode);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluErrorUnicodeStringEXT"), SuppressUnmanagedCodeSecurity]
|
||
private static extern IntPtr gluErrorUnicodeStringEXTUnsafe(int errorCode);
|
||
|
||
public static string gluErrorUnicodeStringEXT(int errorCode)
|
||
{
|
||
return Marshal.PtrToStringAnsi(gluErrorUnicodeStringEXTUnsafe(errorCode));
|
||
}
|
||
#endregion string gluErrorUnicodeStringEXT(int errorCode)
|
||
|
||
#region gluGetNurbsProperty([In] GLUnurbs nurb, int property, [Out] float[] data)
|
||
/// <summary>
|
||
/// Gets a NURBS property.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="property">
|
||
/// The property whose value is to be retrieved. The following values are valid:
|
||
/// <see cref="GLU_SAMPLING_TOLERANCE" />, <see cref="GLU_DISPLAY_MODE" />,
|
||
/// <see cref="GLU_CULLING" />, <see cref="GLU_AUTO_LOAD_MATRIX" />,
|
||
/// <see cref="GLU_PARAMETRIC_TOLERANCE" />,
|
||
/// <see cref="GLU_SAMPLING_METHOD" />, <see cref="GLU_U_STEP" />, and
|
||
/// <see cref="GLU_V_STEP" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to the location into which the value of the named property is
|
||
/// written.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluGetNurbsProperty</b> retrieves properties stored in a NURBS object.
|
||
/// These properties affect the way that NURBS curves and surfaces are rendered.
|
||
/// See the <see cref="gluNurbsProperty" /> reference page for information about
|
||
/// what the properties are and what they do.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluGetNurbsProperty(GLUnurbs *nobj, GLenum property, GLfloat *value);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluGetNurbsProperty([In] GLUnurbs nurb, int property, [Out] float[] data);
|
||
#endregion gluGetNurbsProperty([In] GLUnurbs nurb, int property, [Out] float[] data)
|
||
|
||
#region gluGetNurbsProperty([In] GLUnurbs nurb, int property, out float data)
|
||
/// <summary>
|
||
/// Gets a NURBS property.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="property">
|
||
/// The property whose value is to be retrieved. The following values are valid:
|
||
/// <see cref="GLU_SAMPLING_TOLERANCE" />, <see cref="GLU_DISPLAY_MODE" />,
|
||
/// <see cref="GLU_CULLING" />, <see cref="GLU_AUTO_LOAD_MATRIX" />,
|
||
/// <see cref="GLU_PARAMETRIC_TOLERANCE" />,
|
||
/// <see cref="GLU_SAMPLING_METHOD" />, <see cref="GLU_U_STEP" />, and
|
||
/// <see cref="GLU_V_STEP" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to the location into which the value of the named property is
|
||
/// written.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluGetNurbsProperty</b> retrieves properties stored in a NURBS object.
|
||
/// These properties affect the way that NURBS curves and surfaces are rendered.
|
||
/// See the <see cref="gluNurbsProperty" /> reference page for information about
|
||
/// what the properties are and what they do.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluGetNurbsProperty(GLUnurbs *nobj, GLenum property, GLfloat *value);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluGetNurbsProperty([In] GLUnurbs nurb, int property, out float data);
|
||
#endregion gluGetNurbsProperty([In] GLUnurbs nurb, int property, out float data)
|
||
|
||
#region gluGetNurbsProperty([In] GLUnurbs nurb, int property, [Out] IntPtr data)
|
||
/// <summary>
|
||
/// Gets a NURBS property.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="property">
|
||
/// The property whose value is to be retrieved. The following values are valid:
|
||
/// <see cref="GLU_SAMPLING_TOLERANCE" />, <see cref="GLU_DISPLAY_MODE" />,
|
||
/// <see cref="GLU_CULLING" />, <see cref="GLU_AUTO_LOAD_MATRIX" />,
|
||
/// <see cref="GLU_PARAMETRIC_TOLERANCE" />,
|
||
/// <see cref="GLU_SAMPLING_METHOD" />, <see cref="GLU_U_STEP" />, and
|
||
/// <see cref="GLU_V_STEP" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to the location into which the value of the named property is
|
||
/// written.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluGetNurbsProperty</b> retrieves properties stored in a NURBS object.
|
||
/// These properties affect the way that NURBS curves and surfaces are rendered.
|
||
/// See the <see cref="gluNurbsProperty" /> reference page for information about
|
||
/// what the properties are and what they do.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluGetNurbsProperty(GLUnurbs *nobj, GLenum property, GLfloat *value);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluGetNurbsProperty([In] GLUnurbs nurb, int property, [Out] IntPtr data);
|
||
#endregion gluGetNurbsProperty([In] GLUnurbs nurb, int property, [Out] IntPtr data)
|
||
|
||
#region string gluGetString(int name)
|
||
/// <summary>
|
||
/// Gets a string that describes the GLU version number or supported GLU extension
|
||
/// calls.
|
||
/// </summary>
|
||
/// <param name="name">
|
||
/// Either the version number of GLU (<see cref="GLU_VERSION" />) or available
|
||
/// vendor-specific extension calls (<see cref="GLU_EXTENSIONS" />).
|
||
/// </param>
|
||
/// <returns>
|
||
/// Returns a string describing the GLU version or the GLU extensions that are
|
||
/// supported.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluGetString</b> returns a string describing the GLU version or the GLU
|
||
/// extensions that are supported. When <i>name</i> is
|
||
/// <see cref="GLU_VERSION" />, the returned string is a value that represents
|
||
/// the version number of GLU. The format of the version number is as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <version number><space><vendor-specific information>
|
||
/// (for example, "1.2.11 Microsoft Windows NT")
|
||
/// </para>
|
||
/// <para>
|
||
/// The version number has the form "major_number.minor_number" or
|
||
/// "major_number.minor_number.release_number". The vendor-specific information
|
||
/// is optional, and the format and contents depend on the implementation.
|
||
/// </para>
|
||
/// <para>
|
||
/// When <i>name</i> is <see cref="GLU_EXTENSIONS" />, the returned string
|
||
/// contains a list of names of supported GLU extensions that are separated by
|
||
/// spaces. The format of the returned list of names is as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <extension_name><space><extension_name><space> . . .
|
||
/// (for example, "GLU_NURBS GL_TESSELATION")
|
||
/// </para>
|
||
/// <para>
|
||
/// The extension names cannot contain any spaces.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The <b>gluGetString</b> function is valid for GLU version 1.1 or later.
|
||
/// </para>
|
||
/// <para>
|
||
/// All strings are NULL-terminated.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluGetString</b> only returns information about GLU extensions. Call
|
||
/// <see cref="Gl.glGetString" /> to get a list of GL extensions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluGetString</b> is an initialization routine. Calling it after a
|
||
/// <see cref="Gl.glNewList(int, int)" /> results in undefined behavior.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <c>NULL</c> is returned if name is not <see cref="GLU_VERSION" /> or
|
||
/// <see cref="GLU_EXTENSIONS" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glGetString" />
|
||
// const GLubyte* APIENTRY gluGetString(GLenum name);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION, EntryPoint = "gluGetString"), SuppressUnmanagedCodeSecurity]
|
||
private static extern IntPtr gluGetStringUnsafe(int name);
|
||
|
||
public static string gluGetString(int name)
|
||
{
|
||
return Marshal.PtrToStringAnsi(gluGetStringUnsafe(name));
|
||
}
|
||
#endregion string gluGetString(int name)
|
||
|
||
#region gluGetTessProperty([In] GLUtesselator tess, int which, [Out] double[] data)
|
||
/// <summary>
|
||
/// Gets a tessellation object property.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// The property whose value is to be retrieved. The following values are valid:
|
||
/// <see cref="GLU_TESS_WINDING_RULE" />, <see cref="GLU_TESS_BOUNDARY_ONLY" />,
|
||
/// and <see cref="GLU_TESS_TOLERANCE" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to the location where the value of the named property is written.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluGetTessProperty</b> retrieves properties stored in a tessellation
|
||
/// object. These properties affect the way that tessellation objects are
|
||
/// interpreted and rendered. See the <see cref="gluTessProperty" /> reference
|
||
/// page for information about the properties and what they do.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluGetTessProperty(GLUtesselator *tess, GLenum which, GLdouble *value);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluGetTessProperty([In] GLUtesselator tess, int which, [Out] double[] data);
|
||
#endregion gluGetTessProperty([In] GLUtesselator tess, int which, [Out] double[] data)
|
||
|
||
#region gluGetTessProperty([In] GLUtesselator tess, int which, out double data)
|
||
/// <summary>
|
||
/// Gets a tessellation object property.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// The property whose value is to be retrieved. The following values are valid:
|
||
/// <see cref="GLU_TESS_WINDING_RULE" />, <see cref="GLU_TESS_BOUNDARY_ONLY" />,
|
||
/// and <see cref="GLU_TESS_TOLERANCE" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to the location where the value of the named property is written.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluGetTessProperty</b> retrieves properties stored in a tessellation
|
||
/// object. These properties affect the way that tessellation objects are
|
||
/// interpreted and rendered. See the <see cref="gluTessProperty" /> reference
|
||
/// page for information about the properties and what they do.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluGetTessProperty(GLUtesselator *tess, GLenum which, GLdouble *value);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluGetTessProperty([In] GLUtesselator tess, int which, out double data);
|
||
#endregion gluGetTessProperty([In] GLUtesselator tess, int which, out double data)
|
||
|
||
#region gluGetTessProperty([In] GLUtesselator tess, int which, [Out] IntPtr data)
|
||
/// <summary>
|
||
/// Gets a tessellation object property.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// The property whose value is to be retrieved. The following values are valid:
|
||
/// <see cref="GLU_TESS_WINDING_RULE" />, <see cref="GLU_TESS_BOUNDARY_ONLY" />,
|
||
/// and <see cref="GLU_TESS_TOLERANCE" />.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to the location where the value of the named property is written.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluGetTessProperty</b> retrieves properties stored in a tessellation
|
||
/// object. These properties affect the way that tessellation objects are
|
||
/// interpreted and rendered. See the <see cref="gluTessProperty" /> reference
|
||
/// page for information about the properties and what they do.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluGetTessProperty(GLUtesselator *tess, GLenum which, GLdouble *value);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluGetTessProperty([In] GLUtesselator tess, int which, [Out] IntPtr data);
|
||
#endregion gluGetTessProperty([In] GLUtesselator tess, int which, [Out] IntPtr data)
|
||
|
||
#region gluLoadSamplingMatrices([In] GLUnurbs nurb, [In] float[] modelMatrix, [In] float[] projectionMatrix, [In] int[] viewport)
|
||
/// <summary>
|
||
/// Loads NURBS sampling and culling matrices.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="modelMatrix">
|
||
/// A modelview matrix (as from a <see cref="Gl.glGetFloatv(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="projectionMatrix">
|
||
/// A projection matrix (as from a <see cref="Gl.glGetFloatv(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="viewport">
|
||
/// A viewport (as from a <see cref="Gl.glGetIntegerv(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluLoadSamplingMatrices</b> uses <i>modelMatrix</i>,
|
||
/// <i>projectionMatrix</i>, and <i>viewport</i> to recompute the sampling and
|
||
/// culling matrices stored in <i>nurb</i>. The sampling matrix determines how
|
||
/// finely a NURBS curve or surface must be tessellated to satisfy the sampling
|
||
/// tolerance (as determined by the <see cref="GLU_SAMPLING_TOLERANCE" />
|
||
/// property). The culling matrix is used in deciding if a NURBS curve or
|
||
/// surface should be culled before rendering (when the
|
||
/// <see cref="GLU_CULLING" /> property is turned on).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluLoadSamplingMatrices</b> is necessary only if the
|
||
/// <see cref="GLU_AUTO_LOAD_MATRIX" /> property is turned off (see
|
||
/// <see cref="gluNurbsProperty" />). Although it can be convenient to leave the
|
||
/// <see cref="GLU_AUTO_LOAD_MATRIX" /> property turned on, there can be a
|
||
/// performance penalty for doing so. (A round trip to the GL server is needed
|
||
/// to fetch the current values of the modelview matrix, projection matrix, and
|
||
/// viewport.)
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glGetFloatv(int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetIntegerv(int, IntPtr)" />
|
||
/// <seealso cref="gluGetNurbsProperty(Tao.OpenGl.Glu.GLUnurbs, int, float[])" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluLoadSamplingMatrices(GLUnurbs *nobj, const GLfloat modelMatrix[16], const GLfloat projMatrix[16], const GLint viewport[4]);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluLoadSamplingMatrices([In] GLUnurbs nurb, [In] float[] modelMatrix, [In] float[] projectionMatrix, [In] int[] viewport);
|
||
#endregion gluLoadSamplingMatrices([In] GLUnurbs nurb, [In] float[] modelMatrix, [In] float[] projectionMatrix, [In] int[] viewport)
|
||
|
||
#region gluLookAt(double eyeX, double eyeY, double eyeZ, double centerX, double centerY, double centerZ, double upX, double upY, double upZ)
|
||
/// <summary>
|
||
/// Defines a viewing transformation.
|
||
/// </summary>
|
||
/// <param name="eyeX">
|
||
/// The x axis position of the eye point.
|
||
/// </param>
|
||
/// <param name="eyeY">
|
||
/// The y axis position of the eye point.
|
||
/// </param>
|
||
/// <param name="eyeZ">
|
||
/// The z axis position of the eye point.
|
||
/// </param>
|
||
/// <param name="centerX">
|
||
/// The x axis position of the reference point.
|
||
/// </param>
|
||
/// <param name="centerY">
|
||
/// The y axis position of the reference point.
|
||
/// </param>
|
||
/// <param name="centerZ">
|
||
/// The z axis position of the reference point.
|
||
/// </param>
|
||
/// <param name="upX">
|
||
/// The x axis direction of the up vector.
|
||
/// </param>
|
||
/// <param name="upY">
|
||
/// The y axis direction of the up vector.
|
||
/// </param>
|
||
/// <param name="upZ">
|
||
/// The z axis direction of the up vector.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluLookAt</b> creates a viewing matrix derived from an eye point, a
|
||
/// reference point indicating the center of the scene, and an UP vector.
|
||
/// </para>
|
||
/// <para>
|
||
/// The matrix maps the reference point to the negative z axis and the eye point
|
||
/// to the origin. When a typical projection matrix is used, the center of the
|
||
/// scene therefore maps to the center of the viewport. Similarly, the direction
|
||
/// described by the UP vector projected onto the viewing plane is mapped to the
|
||
/// positive y axis so that it points upward in the viewport. The UP vector must
|
||
/// not be parallel to the line of sight from the eye point to the reference
|
||
/// point.
|
||
/// </para>
|
||
/// <para>
|
||
/// The matrix generated by <b>gluLookAt</b> postmultiplies the current matrix.
|
||
/// </para>
|
||
/// <para>
|
||
/// The matrix M generated by the OpenGL could be computed as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// Let E be the 3d column vector (eyeX, eyeY, eyeZ).
|
||
/// Let C be the 3d column vector (centerX, centerY, centerZ).
|
||
/// Let U be the 3d column vector (upX, upY, upZ).
|
||
/// Compute L = C - E.
|
||
/// Normalize L.
|
||
/// Compute S = L x U.
|
||
/// Normalize S.
|
||
/// Compute U' = S x L.
|
||
/// </para>
|
||
/// <para>
|
||
/// M is the matrix whose columns are, in order:
|
||
/// </para>
|
||
/// <para>
|
||
/// (S, 0), (U', 0), (-L, 0), (-E, 1) (all column vectors)
|
||
/// </para>
|
||
/// <para>
|
||
/// Note: This matrix is defined for use in systems where the the modelling
|
||
/// coordinate vector is a column vector and is multiplied on the left by the
|
||
/// matrices. If you prefer a row vector which gets multiplied by matrices to
|
||
/// its right, then use the transpose of this matrix M.
|
||
/// </para>
|
||
/// <para>
|
||
/// Note: It is necessary that the UP vector NOT be parallel to the line
|
||
/// connecting the center point with the eye point.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glFrustum" />
|
||
/// <seealso cref="gluPerspective" />
|
||
// void APIENTRY gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluLookAt(double eyeX, double eyeY, double eyeZ, double centerX, double centerY, double centerZ, double upX, double upY, double upZ);
|
||
#endregion gluLookAt(double eyeX, double eyeY, double eyeZ, double centerX, double centerY, double centerZ, double upX, double upY, double upZ)
|
||
|
||
#region GLUnurbs gluNewNurbsRenderer()
|
||
/// <summary>
|
||
/// Creates a NURBS object.
|
||
/// </summary>
|
||
/// <returns>
|
||
/// Returns a pointer to a new NURBS object.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <b>gluNewNurbsRenderer</b> creates and returns a pointer to a new NURBS
|
||
/// object. This object must be referred to when calling NURBS rendering and
|
||
/// control functions. A return value of 0 means that there is not enough memory
|
||
/// to allocate the object.
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginCurve" />
|
||
/// <seealso cref="gluBeginSurface" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluDeleteNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// GLUnurbs* APIENTRY gluNewNurbsRenderer(void);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern GLUnurbs gluNewNurbsRenderer();
|
||
#endregion GLUnurbs gluNewNurbsRenderer()
|
||
|
||
#region GLUquadric gluNewQuadric()
|
||
/// <summary>
|
||
/// Creates a quadrics object.
|
||
/// </summary>
|
||
/// <returns>
|
||
/// Returns a pointer to a new quadrics object.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <b>gluNewQuadric</b> 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.
|
||
/// </remarks>
|
||
/// <seealso cref="gluCylinder" />
|
||
/// <seealso cref="gluDeleteQuadric" />
|
||
/// <seealso cref="gluDisk" />
|
||
/// <seealso cref="gluPartialDisk" />
|
||
/// <seealso cref="gluQuadricCallback" />
|
||
/// <seealso cref="gluQuadricDrawStyle" />
|
||
/// <seealso cref="gluQuadricNormals" />
|
||
/// <seealso cref="gluQuadricOrientation" />
|
||
/// <seealso cref="gluQuadricTexture" />
|
||
/// <seealso cref="gluSphere" />
|
||
// GLUquadric* APIENTRY gluNewQuadric(void);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern GLUquadric gluNewQuadric();
|
||
#endregion GLUquadric gluNewQuadric()
|
||
|
||
#region GLUtesselator gluNewTess()
|
||
/// <summary>
|
||
/// Creates a tessellation object.
|
||
/// </summary>
|
||
/// <returns>
|
||
/// Returns a pointer to a new tessellation object.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <b>gluNewTess</b> creates and returns a pointer to a new tessellation object.
|
||
/// This object must be referred to when calling tessellation functions. A
|
||
/// return value of 0 means that there is not enough memory to allocate the
|
||
/// object.
|
||
/// </remarks>
|
||
/// <seealso cref="gluDeleteTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
// GLUtesselator* APIENTRY gluNewTess(void);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern GLUtesselator gluNewTess();
|
||
#endregion GLUtesselator gluNewTess()
|
||
|
||
#region gluNextContour([In] GLUtesselator tess, int type)
|
||
/// <summary>
|
||
/// Marks the beginning of another contour.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// <para>
|
||
/// The type of the contour being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_EXTERIOR" /></term>
|
||
/// <description>
|
||
/// An exterior contour defines an exterior boundary of the polygon.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_INTERIOR" /></term>
|
||
/// <description>
|
||
/// An interior contour defines an interior boundary of the polygon
|
||
/// (such as a hole).
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_UNKNOWN" /></term>
|
||
/// <description>
|
||
/// An unknown contour is analyzed by the library to determine
|
||
/// whether it is interior or exterior.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_CCW" />, <see cref="GLU_CW" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The first <see cref="GLU_CCW" /> or <see cref="GLU_CW" />
|
||
/// contour defined is considered to be exterior. All other
|
||
/// contours are considered to be exterior if they are oriented
|
||
/// in the same direction (clockwise or counterclockwise) as the
|
||
/// first contour, and interior if they are not.
|
||
/// </para>
|
||
/// <para>
|
||
/// If one contour is of type <see cref="GLU_CCW" /> or
|
||
/// <see cref="GLU_CW" />, then all contours must be of the same
|
||
/// type (if they are not, then all <see cref="GLU_CCW" /> and
|
||
/// <see cref="GLU_CW" /> contours will be changed to
|
||
/// <see cref="GLU_UNKNOWN" />). Note that there is no real
|
||
/// difference between the <see cref="GLU_CCW" /> and
|
||
/// <see cref="GLU_CW" /> contour types.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNextContour</b> is used in describing polygons with multiple contours.
|
||
/// After the first contour has been described through a series of
|
||
/// <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" /> calls, a <b>gluNextContour</b> call indicates
|
||
/// that the previous contour is complete and that the next contour is about to
|
||
/// begin. Another series of <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" /> calls is then used to
|
||
/// describe the new contour. This process can be repeated until all contours
|
||
/// have been described.
|
||
/// </para>
|
||
/// <para>
|
||
/// Before the first contour is described, <b>gluNextContour</b> can be called to
|
||
/// define the type of the first contour. If <b>gluNextContour</b> is not called
|
||
/// before the first contour, then the first contour is marked
|
||
/// <see cref="GLU_EXTERIOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// This command is obsolete and is provided for backward compatibility only.
|
||
/// Calls to <b>gluNextContour</b> are mapped to <see cref="gluTessEndContour" />
|
||
/// followed by <see cref="gluTessBeginContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can describe a quadrilateral with a triangular hole in it as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginPolygon(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndContour" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluNextContour(GLUtesselator *tess, GLenum type);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNextContour([In] GLUtesselator tess, int type);
|
||
#endregion gluNextContour([In] GLUtesselator tess, int type)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginCallback func)
|
||
{
|
||
nurbsBeginCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsBeginCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginDataCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginDataCallback func)
|
||
{
|
||
nurbsBeginDataCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsBeginDataCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsBeginDataCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorCallback func)
|
||
{
|
||
nurbsColorCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsColorCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorDataCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorDataCallback func)
|
||
{
|
||
nurbsColorDataCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsColorDataCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsColorDataCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndCallback func)
|
||
{
|
||
nurbsEndCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsEndCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndDataCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndDataCallback func)
|
||
{
|
||
nurbsEndDataCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsEndDataCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsEndDataCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsErrorCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsErrorCallback func)
|
||
{
|
||
nurbsErrorCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsErrorCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsErrorCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalCallback func)
|
||
{
|
||
nurbsNormalCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsNormalCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalDataCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalDataCallback func)
|
||
{
|
||
nurbsNormalDataCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsNormalDataCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsNormalDataCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordCallback func)
|
||
{
|
||
nurbsTexCoordCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsTexCoordCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordDataCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordDataCallback func)
|
||
{
|
||
nurbsTexCoordDataCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsTexCoordDataCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsTexCoordDataCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexCallback func)
|
||
{
|
||
nurbsVertexCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsVertexCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexCallback func)
|
||
|
||
#region gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexDataCallback func)
|
||
/// <summary>
|
||
/// The <b>gluNurbsCallback</b> mehtod defines a callback for a NURBS object.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The legal callbacks are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback indicates the start of a primitive. The
|
||
/// function takes a single argument of type <see cref="int" />,
|
||
/// which can be one of <see cref="Gl.GL_LINES" />,
|
||
/// <see cref="Gl.GL_LINE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />,
|
||
/// <see cref="Gl.GL_TRIANGLES" />, or
|
||
/// <see cref="Gl.GL_QUAD_STRIP" />. The default begin callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR" /></term>
|
||
/// <description>
|
||
/// The color callback is invoked as the color of a vertex is
|
||
/// generated. The components of the color are stored in the
|
||
/// parameter <i>colorData</i>. This callback is effective only when
|
||
/// the user provides a color map (<see cref="Gl.GL_MAP1_COLOR_4" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />). <i>colorData</i>
|
||
/// contains four components: R,G,B,A. The default color callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_COLOR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_COLOR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsColorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END" /></term>
|
||
/// <description>
|
||
/// The end callback is invoked at the end of a primitive. The
|
||
/// default end callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is <see cref="NurbsEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_END_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_END" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_ERROR" /></term>
|
||
/// <description>
|
||
/// The error function is called when an error is encountered. Its
|
||
/// single argument is of type <see cref="int" />, and it indicates
|
||
/// the specific error that occurred. There are 37 errors unique to
|
||
/// NURBS named <see cref="GLU_NURBS_ERROR1" /> through
|
||
/// <see cref="GLU_NURBS_ERROR37" />. Character strings describing
|
||
/// these errors can be retrieved with <see cref="gluErrorString" />.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="NurbsErrorCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL" /></term>
|
||
/// <description>
|
||
/// The normal callback is invoked as the vertex normal is generated.
|
||
/// The components of the normal are stored in the parameter
|
||
/// <i>normalData</i>. In the case of a NURBS curve, the callback
|
||
/// function is effective only when the user provides a normal map
|
||
/// (<see cref="Gl.GL_MAP1_NORMAL" />). In the case of a NURBS
|
||
/// surface, if a normal map (<see cref="Gl.GL_MAP2_NORMAL" />) is
|
||
/// provided, then the generated normal is computed from the normal
|
||
/// map. If a normal map is not provided then a surface normal is
|
||
/// computed in a manner similar to that described for evaluators
|
||
/// when <see cref="Gl.GL_AUTO_NORMAL" /> is enabled. The default
|
||
/// normal callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsNormalCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_NORMAL_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_NURBS_NORMAL" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is a
|
||
/// copy of the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default callback
|
||
/// function is <c>null</c>. The delegate prototype for this
|
||
/// callback is <see cref="NurbsNormalDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD" /></term>
|
||
/// <description>
|
||
/// The texture callback is invoked as the texture coordinates of a
|
||
/// vertex are generated. These coordinates are stored in the
|
||
/// parameter <i>texCoord</i>. The number of texture coordinates can
|
||
/// be 1, 2, 3, or 4 depending on which type of texture map is
|
||
/// specified (<see cref="Gl.GL_MAP1_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP1_TEXTURE_COORD_4" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_1" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_2" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_3" />,
|
||
/// <see cref="Gl.GL_MAP2_TEXTURE_COORD_4" />). If no texture map is
|
||
/// specified, this callback function will not be called. The
|
||
/// default texture callback function is <c>null</c>. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="NurbsTexCoordCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_TEXTURE_COORD_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_TEXTURE_COORD" />
|
||
/// callback, except that it takes an additional pointer argument.
|
||
/// This pointer is a copy of the pointer that was specified at the
|
||
/// last call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsTexCoordDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback indicates a vertex of the primitive. The
|
||
/// coordinates of the vertex are stored in the parameter
|
||
/// <i>vertexData</i>. All the generated vertices have dimension 3,
|
||
/// that is, homogeneous coordinates have been transformed into
|
||
/// affine coordinates. The default vertex callback function is
|
||
/// <c>null</c>. The delegate prototype for this callback is
|
||
/// <see cref="NurbsVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// This is the same as the <see cref="GLU_NURBS_VERTEX" /> callback,
|
||
/// except that it takes an additional pointer argument. This
|
||
/// pointer is a copy of the pointer that was specified at the last
|
||
/// call to <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />. The default
|
||
/// callback function is <c>null</c>. The delegate prototype for
|
||
/// this callback is <see cref="NurbsVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function that the callback invokes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is used to define a callback to be used by a NURBS
|
||
/// object. If the specified callback is already defined, then it is replaced.
|
||
/// If <i>func</i> is <c>null</c>, then this callback will not get invoked and
|
||
/// the related data, if any, will be lost.
|
||
/// </para>
|
||
/// <para>
|
||
/// Except the error callback, these callbacks are used by NURBS tessellator
|
||
/// (when <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />) to return back the OpenGL polygon
|
||
/// primitives resulting from the tessellation. Note that there are two
|
||
/// versions of each callback: one with a user data pointer and one without. If
|
||
/// both versions for a particular callback are specified then the callback with
|
||
/// the user data pointer will be used. Note that <i>userData</i> is a copy of
|
||
/// the pointer that was specified at the last call to
|
||
/// <see cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The error callback function is effective no matter which value that
|
||
/// <see cref="GLU_NURBS_MODE" /> is set to. All other callback functions are
|
||
/// effective only when <see cref="GLU_NURBS_MODE" /> is set to
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallback</b> is available only if the GLU version is 1.2 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// GLU version 1.2 supports only the <see cref="GLU_ERROR" /> parameter for
|
||
/// <i>which</i>. The <see cref="GLU_ERROR" /> value is deprecated in GLU
|
||
/// version 1.3 in favor of <see cref="GLU_NURBS_ERROR" />. All other
|
||
/// accepted values for <i>func</i> are available only if the GLU version is 1.3
|
||
/// or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="NurbsBeginCallback" />
|
||
/// <seealso cref="NurbsBeginDataCallback" />
|
||
/// <seealso cref="NurbsColorCallback" />
|
||
/// <seealso cref="NurbsColorDataCallback" />
|
||
/// <seealso cref="NurbsEndCallback" />
|
||
/// <seealso cref="NurbsEndDataCallback" />
|
||
/// <seealso cref="NurbsErrorCallback" />
|
||
/// <seealso cref="NurbsNormalCallback" />
|
||
/// <seealso cref="NurbsNormalDataCallback" />
|
||
/// <seealso cref="NurbsTexCoordCallback" />
|
||
/// <seealso cref="NurbsTexCoordDataCallback" />
|
||
/// <seealso cref="NurbsVertexCallback" />
|
||
/// <seealso cref="NurbsVertexDataCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallbackData(Tao.OpenGl.Glu.GLUnurbs, byte[])" />
|
||
/// <seealso cref="gluNurbsProperty" />
|
||
// void APIENTRY gluNurbsCallback(GLUnurbs *nobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexDataCallback func)
|
||
{
|
||
nurbsVertexDataCallback = func;
|
||
__gluNurbsCallback(nurb, which, nurbsVertexDataCallback);
|
||
}
|
||
#endregion gluNurbsCallback([In] GLUnurbs nurb, int which, [In] NurbsVertexDataCallback func)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[ , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[, ,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] byte[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[ , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[, ,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] double[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[ , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[, ,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] short[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[ , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[, ,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] int[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[ , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[, ,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] float[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[ , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[, ,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] ushort[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[ , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[, ,] userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] uint[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] IntPtr userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] IntPtr userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] IntPtr userData)
|
||
|
||
#region gluNurbsCallbackData([In] GLUnurbs nurb, [In] void *userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluNurbsCallbackData</b> is available only if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackData(GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern void gluNurbsCallbackData([In] GLUnurbs nurb, [In] void* userData);
|
||
#endregion gluNurbsCallbackData([In] GLUnurbs nurb, [In] void *userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[ , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[, ,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] byte[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[ , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[, ,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] double[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[ , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[, ,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] short[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[ , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[, ,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] int[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[ , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[, ,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] float[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[ , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[, ,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] ushort[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[ , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[ , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[ , , ] userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[, ,] userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] uint[ , , ] userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] IntPtr userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] IntPtr userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] IntPtr userData)
|
||
|
||
#region gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] void *userData)
|
||
/// <summary>
|
||
/// Sets a user data pointer.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="userData">
|
||
/// A pointer to the user's data.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluNurbsCallbackDataEXT</b> is used to pass a pointer to the application's
|
||
/// data to NURBS tessellator. A copy of this pointer will be passed by the
|
||
/// tessellator in the NURBS callback functions (set by
|
||
/// <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />).
|
||
/// </remarks>
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern void gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] void* userData);
|
||
#endregion gluNurbsCallbackDataEXT([In] GLUnurbs nurb, [In] void *userData)
|
||
|
||
#region gluNurbsCurve([In] GLUnurbs nurb, int knotCount, [In] float[] knots, int stride, [In] float[] control, int order, int type)
|
||
/// <summary>
|
||
/// Defines the shape of a NURBS curve.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="knotCount">
|
||
/// The number of knots in <i>knot</i>. The <i>knotCount</i> parameter equals
|
||
/// the number of control points plus the order.
|
||
/// </param>
|
||
/// <param name="knots">
|
||
/// An array of <i>knotCount</i> nondecreasing knot values.
|
||
/// </param>
|
||
/// <param name="stride">
|
||
/// The offset (as a number of single-precision floating-point values) between
|
||
/// successive curve control points.
|
||
/// </param>
|
||
/// <param name="control">
|
||
/// A pointer to an array of control points. The coordinates must agree with
|
||
/// <i>type</i>.
|
||
/// </param>
|
||
/// <param name="order">
|
||
/// The order of the NURBS curve. The <i>order</i> parameter equals degree + 1;
|
||
/// hence a cubic curve has an order of 4.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// The type of the curve. If this curve is defined within a
|
||
/// <see cref="gluBeginCurve" />/<see cref="gluEndCurve" /> pair, then the type
|
||
/// can be any of the valid one-dimensional evaluator types (such as
|
||
/// <see cref="Gl.GL_MAP1_VERTEX_3" /> or <see cref="Gl.GL_MAP1_COLOR_4" />).
|
||
/// Between a <see cref="gluBeginTrim" />/<see cref="gluEndTrim" /> pair, the
|
||
/// only valid types are <see cref="GLU_MAP1_TRIM_2" /> and
|
||
/// <see cref="GLU_MAP1_TRIM_3" />.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <b>gluNurbsCurve</b> to describe a NURBS curve.
|
||
/// </para>
|
||
/// <para>
|
||
/// When <b>gluNurbsCurve</b> appears between a
|
||
/// <see cref="gluBeginCurve" />/<see cref="gluEndCurve" /> pair, it is used to
|
||
/// describe a curve to be rendered. Positional, texture, and color coordinates
|
||
/// are associated by presenting each as a separate <b>gluNurbsCurve</b> between
|
||
/// a <see cref="gluBeginCurve" />/<see cref="gluEndCurve" /> pair. No more than
|
||
/// one call to <b>gluNurbsCurve</b> for each of color, position, and texture
|
||
/// data can be made within a single
|
||
/// <see cref="gluBeginCurve" />/<see cref="gluEndCurve" /> pair. Exactly one
|
||
/// call must be made to describe the position of the curve (a type of
|
||
/// <see cref="Gl.GL_MAP1_VERTEX_3" /> or <see cref="Gl.GL_MAP1_VERTEX_4" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// When <b>gluNurbsCurve</b> appears between a
|
||
/// <see cref="gluBeginTrim" />/<see cref="gluEndTrim" /> pair, it is used to
|
||
/// describe a trimming curve on a NURBS surface. If <i>type</i> is
|
||
/// <see cref="GLU_MAP1_TRIM_2" />, then it describes a curve in two-dimensional
|
||
/// (u and v) parameter space. If it is <see cref="GLU_MAP1_TRIM_3" />, then it
|
||
/// describes a curve in two-dimensional homogeneous (u, v, and w) parameter
|
||
/// space. See the <see cref="gluBeginTrim" /> reference page for more
|
||
/// discussion about trimming curves.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// To define trim curves which stitch well, use <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following commands render a textured NURBS curve with normals:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginCurve(nobj);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_NORMAL);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_VERTEX_4);
|
||
/// Glu.gluEndCurve(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginCurve" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluEndCurve" />
|
||
/// <seealso cref="gluEndTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluNurbsCurve(GLUnurbs *nobj, GLint nknots, GLfloat *knot, GLint stride, GLfloat *ctlarray, GLint order, GLenum type);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCurve([In] GLUnurbs nurb, int knotCount, [In] float[] knots, int stride, [In] float[] control, int order, int type);
|
||
#endregion gluNurbsCurve([In] GLUnurbs nurb, int knotCount, [In] float[] knots, int stride, [In] float[] control, int order, int type)
|
||
|
||
#region gluNurbsCurve([In] GLUnurbs nurb, int knotCount, [In] float[] knots, int stride, [In] float[ , ] control, int order, int type)
|
||
/// <summary>
|
||
/// Defines the shape of a NURBS curve.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="knotCount">
|
||
/// The number of knots in <i>knot</i>. The <i>knotCount</i> parameter equals
|
||
/// the number of control points plus the order.
|
||
/// </param>
|
||
/// <param name="knots">
|
||
/// An array of <i>knotCount</i> nondecreasing knot values.
|
||
/// </param>
|
||
/// <param name="stride">
|
||
/// The offset (as a number of single-precision floating-point values) between
|
||
/// successive curve control points.
|
||
/// </param>
|
||
/// <param name="control">
|
||
/// A pointer to an array of control points. The coordinates must agree with
|
||
/// <i>type</i>.
|
||
/// </param>
|
||
/// <param name="order">
|
||
/// The order of the NURBS curve. The <i>order</i> parameter equals degree + 1;
|
||
/// hence a cubic curve has an order of 4.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// The type of the curve. If this curve is defined within a
|
||
/// <see cref="gluBeginCurve" />/<see cref="gluEndCurve" /> pair, then the type
|
||
/// can be any of the valid one-dimensional evaluator types (such as
|
||
/// <see cref="Gl.GL_MAP1_VERTEX_3" /> or <see cref="Gl.GL_MAP1_COLOR_4" />).
|
||
/// Between a <see cref="gluBeginTrim" />/<see cref="gluEndTrim" /> pair, the
|
||
/// only valid types are <see cref="GLU_MAP1_TRIM_2" /> and
|
||
/// <see cref="GLU_MAP1_TRIM_3" />.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <b>gluNurbsCurve</b> to describe a NURBS curve.
|
||
/// </para>
|
||
/// <para>
|
||
/// When <b>gluNurbsCurve</b> appears between a
|
||
/// <see cref="gluBeginCurve" />/<see cref="gluEndCurve" /> pair, it is used to
|
||
/// describe a curve to be rendered. Positional, texture, and color coordinates
|
||
/// are associated by presenting each as a separate <b>gluNurbsCurve</b> between
|
||
/// a <see cref="gluBeginCurve" />/<see cref="gluEndCurve" /> pair. No more than
|
||
/// one call to <b>gluNurbsCurve</b> for each of color, position, and texture
|
||
/// data can be made within a single
|
||
/// <see cref="gluBeginCurve" />/<see cref="gluEndCurve" /> pair. Exactly one
|
||
/// call must be made to describe the position of the curve (a type of
|
||
/// <see cref="Gl.GL_MAP1_VERTEX_3" /> or <see cref="Gl.GL_MAP1_VERTEX_4" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// When <b>gluNurbsCurve</b> appears between a
|
||
/// <see cref="gluBeginTrim" />/<see cref="gluEndTrim" /> pair, it is used to
|
||
/// describe a trimming curve on a NURBS surface. If <i>type</i> is
|
||
/// <see cref="GLU_MAP1_TRIM_2" />, then it describes a curve in two-dimensional
|
||
/// (u and v) parameter space. If it is <see cref="GLU_MAP1_TRIM_3" />, then it
|
||
/// describes a curve in two-dimensional homogeneous (u, v, and w) parameter
|
||
/// space. See the <see cref="gluBeginTrim" /> reference page for more
|
||
/// discussion about trimming curves.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// To define trim curves which stitch well, use <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following commands render a textured NURBS curve with normals:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginCurve(nobj);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_NORMAL);
|
||
/// Glu.gluNurbsCurve(nobj, ..., Gl.GL_MAP1_VERTEX_4);
|
||
/// Glu.gluEndCurve(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginCurve" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluEndCurve" />
|
||
/// <seealso cref="gluEndTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluNurbsCurve(GLUnurbs *nobj, GLint nknots, GLfloat *knot, GLint stride, GLfloat *ctlarray, GLint order, GLenum type);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsCurve([In] GLUnurbs nurb, int knotCount, [In] float[] knots, int stride, [In] float[,] control, int order, int type);
|
||
#endregion gluNurbsCurve([In] GLUnurbs nurb, int knotCount, [In] float[] knots, int stride, [In] float[ , ] control, int order, int type)
|
||
|
||
#region gluNurbsProperty([In] GLUnurbs nurb, int property, float val)
|
||
/// <summary>
|
||
/// Sets a NURBS property.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="property">
|
||
/// The property to be set. Valid values are
|
||
/// <see cref="GLU_SAMPLING_TOLERANCE" />, <see cref="GLU_DISPLAY_MODE" />,
|
||
/// <see cref="GLU_CULLING" />, <see cref="GLU_AUTO_LOAD_MATRIX" />,
|
||
/// <see cref="GLU_PARAMETRIC_TOLERANCE" />, <see cref="GLU_SAMPLING_METHOD" />,
|
||
/// <see cref="GLU_U_STEP" />, <see cref="GLU_V_STEP" />, or
|
||
/// <see cref="GLU_NURBS_MODE" />.
|
||
/// </param>
|
||
/// <param name="val">
|
||
/// The value of the indicated property. It may be a numeric value, or one of
|
||
/// <see cref="GLU_OUTLINE_POLYGON" />, <see cref="GLU_FILL" />,
|
||
/// <see cref="GLU_OUTLINE_PATCH" />, <see cref="Gl.GL_TRUE" />,
|
||
/// <see cref="Gl.GL_FALSE" />, <see cref="GLU_PATH_LENGTH" />,
|
||
/// <see cref="GLU_PARAMETRIC_ERROR" />, <see cref="GLU_DOMAIN_DISTANCE" />,
|
||
/// <see cref="GLU_NURBS_RENDERER" />, or <see cref="GLU_NURBS_TESSELLATOR" />.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluNurbsProperty</b> is used to control properties stored in a NURBS
|
||
/// object. These properties affect the way that a NURBS curve is rendered. The
|
||
/// accepted values for property are as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NURBS_MODE" /></term>
|
||
/// <description>
|
||
/// <i>val</i> should be set to be either
|
||
/// <see cref="GLU_NURBS_RENDERER" /> or
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />. When set to
|
||
/// <see cref="GLU_NURBS_RENDERER" />, NURBS objects are tessellated
|
||
/// into OpenGL primitives and sent to the pipeline for rendering.
|
||
/// When set to <see cref="GLU_NURBS_TESSELLATOR" />, NURBS objects
|
||
/// are tessellated into OpenGL primitives but the vertices, normals,
|
||
/// colors, and/or textures are retrieved back through a callback
|
||
/// interface (see <see cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />). This allows the
|
||
/// user to cache the tessellated results for further processing.
|
||
/// The initial value is <see cref="GLU_NURBS_RENDERER" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_SAMPLING_METHOD" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// Specifies how a NURBS surface should be tessellated.
|
||
/// <i>val</i> may be one of <see cref="GLU_PATH_LENGTH" />,
|
||
/// <see cref="GLU_PARAMETRIC_ERROR" />,
|
||
/// <see cref="GLU_DOMAIN_DISTANCE" />,
|
||
/// <see cref="GLU_OBJECT_PATH_LENGTH" />, or
|
||
/// <see cref="GLU_OBJECT_PARAMETRIC_ERROR" />. When set to
|
||
/// <see cref="GLU_PATH_LENGTH" />, the surface is rendered so
|
||
/// that the maximum length, in pixels, of the edges of the
|
||
/// tessellation polygons is no greater than what is specified by
|
||
/// <see cref="GLU_SAMPLING_TOLERANCE" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_PARAMETRIC_ERROR" /> specifies that the
|
||
/// surface is rendered in such a way that the value specified by
|
||
/// <see cref="GLU_PARAMETRIC_TOLERANCE" /> describes the maximum
|
||
/// distance, in pixels, between the tessellation polygons and
|
||
/// the surfaces they approximate.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_DOMAIN_DISTANCE" /> allows users to specify,
|
||
/// in parametric coordinates, how many sample points per unit
|
||
/// length are taken in u, v direction.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_OBJECT_PATH_LENGTH" /> is similar to
|
||
/// <see cref="GLU_PATH_LENGTH" /> except that it is view
|
||
/// independent, that is, the surface is rendered so that the
|
||
/// maximum length, in object space, of edges of the tessellation
|
||
/// polygons is no greater than what is specified by
|
||
/// <see cref="GLU_SAMPLING_TOLERANCE" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_OBJECT_PARAMETRIC_ERROR" /> is similar to
|
||
/// <see cref="GLU_PARAMETRIC_ERROR" /> except that it is view
|
||
/// independent, that is, the surface is rendered in such a way
|
||
/// that the value specified by
|
||
/// <see cref="GLU_PARAMETRIC_TOLERANCE" /> describes the maximum
|
||
/// distance, in object space, between the tessellation polygons
|
||
/// and the surfaces they approximate.
|
||
/// </para>
|
||
/// <para>
|
||
/// The initial value of <see cref="GLU_SAMPLING_METHOD" /> is
|
||
/// <see cref="GLU_PATH_LENGTH" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_SAMPLING_TOLERANCE" /></term>
|
||
/// <description>
|
||
/// Specifies the maximum length, in pixels or in object space length
|
||
/// unit, to use when the sampling method is set to
|
||
/// <see cref="GLU_PATH_LENGTH" /> or
|
||
/// <see cref="GLU_OBJECT_PATH_LENGTH" />. The NURBS code is
|
||
/// conservative when rendering a curve or surface, so the actual
|
||
/// length can be somewhat shorter. The initial value is 50.0
|
||
/// pixels.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_PARAMETRIC_TOLERANCE" /></term>
|
||
/// <description>
|
||
/// Specifies the maximum distance, in pixels or in object space
|
||
/// length unit, to use when the sampling method is
|
||
/// <see cref="GLU_PARAMETRIC_ERROR" /> or
|
||
/// <see cref="GLU_OBJECT_PARAMETRIC_ERROR" />. The initial value is
|
||
/// 0.5.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_U_STEP" /></term>
|
||
/// <description>
|
||
/// Specifies the number of sample points per unit length taken along
|
||
/// the u axis in parametric coordinates. It is needed when
|
||
/// <see cref="GLU_SAMPLING_METHOD" /> is set to
|
||
/// <see cref="GLU_DOMAIN_DISTANCE" />. The initial value is 100.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_V_STEP" /></term>
|
||
/// <description>
|
||
/// Specifies the number of sample points per unit length taken along
|
||
/// the v axis in parametric coordinate. It is needed when
|
||
/// <see cref="GLU_SAMPLING_METHOD" /> is set to
|
||
/// <see cref="GLU_DOMAIN_DISTANCE" />. The initial value is 100.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_DISPLAY_MODE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// <i>val</i> can be set to <see cref="GLU_OUTLINE_POLYGON" />,
|
||
/// <see cref="GLU_FILL" />, or <see cref="GLU_OUTLINE_PATCH" />.
|
||
/// When <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_RENDERER" />, <i>val</i> defines how a
|
||
/// NURBS surface should be rendered. When <i>val</i> is set to
|
||
/// <see cref="GLU_FILL" />, the surface is rendered as a set of
|
||
/// polygons. When <i>val</i> is set to
|
||
/// <see cref="GLU_OUTLINE_POLYGON" />, the NURBS library draws
|
||
/// only the outlines of the polygons created by tessellation.
|
||
/// When <i>val</i> is set to
|
||
/// <see cref="GLU_OUTLINE_PATCH" /> just the outlines of patches
|
||
/// and trim curves defined by the user are drawn.
|
||
/// </para>
|
||
/// <para>
|
||
/// When <see cref="GLU_NURBS_MODE" /> is set to be
|
||
/// <see cref="GLU_NURBS_TESSELLATOR" />, <i>val</i> defines how
|
||
/// a NURBS surface should be tessellated. When
|
||
/// <see cref="GLU_DISPLAY_MODE" /> is set to
|
||
/// <see cref="GLU_FILL" /> or
|
||
/// <see cref="GLU_OUTLINE_POLYGON" />, the NURBS surface is
|
||
/// tessellated into OpenGL triangle primitives which can be
|
||
/// retrieved back through callback functions. If
|
||
/// <see cref="GLU_DISPLAY_MODE" /> is set to
|
||
/// <see cref="GLU_OUTLINE_PATCH" />, only the outlines of the
|
||
/// patches and trim curves are generated as a sequence of
|
||
/// line strips which can be retrieved back through callback
|
||
/// functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// The initial value is <see cref="GLU_FILL" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_CULLING" /></term>
|
||
/// <description>
|
||
/// <i>val</i> is a boolean value that, when set to
|
||
/// <see cref="Gl.GL_TRUE" />, indicates that a NURBS curve should be
|
||
/// discarded prior to tessellation if its control points lie outside
|
||
/// the current viewport. The initial value is
|
||
/// <see cref="Gl.GL_FALSE" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_AUTO_LOAD_MATRIX" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// <i>val</i> is a boolean value. When set to
|
||
/// <see cref="Gl.GL_TRUE" />, the NURBS code downloads the
|
||
/// projection matrix, the modelview matrix, and the viewport
|
||
/// from the GL server to compute sampling and culling matrices
|
||
/// for each NURBS curve that is rendered. Sampling and culling
|
||
/// matrices are required to determine the tessellation of a
|
||
/// NURBS surface into line segments or polygons and to cull a
|
||
/// NURBS surface if it lies outside the viewport.
|
||
/// </para>
|
||
/// <para>
|
||
/// If this mode is set to <see cref="Gl.GL_FALSE" />, then the
|
||
/// program needs to provide a projection matrix, a modelview
|
||
/// matrix, and a viewport for the NURBS renderer to use to
|
||
/// construct sampling and culling matrices. This can be done
|
||
/// with the <see cref="gluLoadSamplingMatrices" /> function.
|
||
/// This mode is initially set to <see cref="Gl.GL_TRUE" />.
|
||
/// Changing it from <see cref="Gl.GL_TRUE" /> to
|
||
/// <see cref="Gl.GL_FALSE" /> does not affect the sampling and
|
||
/// culling matrices until <see cref="gluLoadSamplingMatrices" />
|
||
/// is called.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// If <see cref="GLU_AUTO_LOAD_MATRIX" /> is true, sampling and culling may be
|
||
/// executed incorrectly if NURBS routines are compiled into a display list.
|
||
/// </para>
|
||
/// <para>
|
||
/// A <i>property</i> of <see cref="GLU_PARAMETRIC_TOLERANCE" />,
|
||
/// <see cref="GLU_SAMPLING_METHOD" />, <see cref="GLU_U_STEP" />, or
|
||
/// <see cref="GLU_V_STEP" />, or a <i>val</i> of <see cref="GLU_PATH_LENGTH" />,
|
||
/// <see cref="GLU_PARAMETRIC_ERROR" />, <see cref="GLU_DOMAIN_DISTANCE" /> are
|
||
/// only available if the GLU version is 1.1 or greater. They are not valid
|
||
/// parameters in GLU 1.0.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="gluGetString" /> can be used to determine the GLU version.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_NURBS_MODE" /> is only availble if the GLU version is 1.3 or
|
||
/// greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// The <see cref="GLU_OBJECT_PATH_LENGTH" /> and
|
||
/// <see cref="GLU_OBJECT_PARAMETRIC_ERROR" /> values for the
|
||
/// <see cref="GLU_SAMPLING_METHOD" /> property are only available if the GLU
|
||
/// version is 1.3 or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluGetNurbsProperty(Tao.OpenGl.Glu.GLUnurbs, int, float[])" />
|
||
/// <seealso cref="gluGetString" />
|
||
/// <seealso cref="gluLoadSamplingMatrices" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCallback(Tao.OpenGl.Glu.GLUnurbs, int, Tao.OpenGl.Glu.NurbsBeginCallback)" />
|
||
// void APIENTRY gluNurbsProperty(GLUnurbs *nobj, GLenum property, GLfloat value);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsProperty([In] GLUnurbs nurb, int property, float val);
|
||
#endregion gluNurbsProperty([In] GLUnurbs nurb, int property, float val)
|
||
|
||
#region gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, [In] float[] control, int sOrder, int tOrder, int type)
|
||
/// <summary>
|
||
/// Defines the shape of a NURBS surface.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="sKnotCount">
|
||
/// The number of knots in the parametric u direction.
|
||
/// </param>
|
||
/// <param name="sKnots">
|
||
/// An array of <i>sKnotCount</i> nondecreasing knot values in the parametric
|
||
/// u direction
|
||
/// </param>
|
||
/// <param name="tKnotCount">
|
||
/// The number of knots in the parametric v direction.
|
||
/// </param>
|
||
/// <param name="tKnots">
|
||
/// An array of <i>tKnotCount</i> nondecreasing knot values in the parametric
|
||
/// v direction.
|
||
/// </param>
|
||
/// <param name="sStride">
|
||
/// The offset (as a number of single-precision floating-point values) between
|
||
/// successive control points in the parametric u direction in <i>control</i>.
|
||
/// </param>
|
||
/// <param name="tStride">
|
||
/// The offset (in single-precision floating-point values) between successive
|
||
/// control points in the parametric v direction in <i>control</i>.
|
||
/// </param>
|
||
/// <param name="control">
|
||
/// An array containing control points for the NURBS surface. The offsets
|
||
/// between successive control points in the parametric u and v directions are
|
||
/// given by <i>sStride</i> and <i>tStride</i>.
|
||
/// </param>
|
||
/// <param name="sOrder">
|
||
/// The order of the NURBS surface in the parametric u direction. The order is
|
||
/// one more than the degree, hence a surface that is cubic in u has a u order of
|
||
/// 4.
|
||
/// </param>
|
||
/// <param name="tOrder">
|
||
/// The order of the NURBS surface in the parametric v direction. The order is
|
||
/// one more than the degree, hence a surface that is cubic in v has a v order of
|
||
/// 4.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// The type of the surface. The <i>type</i> parameter can be any of the valid
|
||
/// two-dimensional evaluator types (such as <see cref="Gl.GL_MAP2_VERTEX_3" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <b>gluNurbsSurface</b> within a NURBS (Non-Uniform Rational B-Spline)
|
||
/// surface definition to describe the shape of a NURBS surface (before any
|
||
/// trimming). To mark the beginning of a NURBS surface definition, use the
|
||
/// <see cref="gluBeginSurface" /> command. To mark the end of a NURBS surface
|
||
/// definition, use the <see cref="gluEndSurface" /> command. Call
|
||
/// <b>gluNurbsSurface</b> within a NURBS surface definition only.
|
||
/// </para>
|
||
/// <para>
|
||
/// Positional, texture, and color coordinates are associated with a surface by
|
||
/// presenting each as a separate <b>gluNurbsSurface</b> between a
|
||
/// <see cref="gluBeginSurface" />/<see cref="gluEndSurface" /> pair. No more
|
||
/// than one call to <b>gluNurbsSurface</b> for each of color, position, and
|
||
/// texture data can be made within a single
|
||
/// <see cref="gluBeginSurface" />/<see cref="gluEndSurface" /> pair. Exactly
|
||
/// one call must be made to describe the position of the surface (a type of
|
||
/// <see cref="Gl.GL_MAP2_VERTEX_3" /> or <see cref="Gl.GL_MAP2_VERTEX_4" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A NURBS surface can be trimmed by using the commands
|
||
/// <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" /> and <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" /> between calls to
|
||
/// <see cref="gluBeginTrim" /> and <see cref="gluEndTrim" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that a <b>gluNurbsSurface</b> with <i>sKnotCount</i> knots in the u
|
||
/// direction and <i>tKnotCount</i> knots in the v direction with orders
|
||
/// <i>sOrder</i> and <i>tOrder</i> must have (<i>sKnotCount</i> - <i>sOrder</i>)
|
||
/// multiplied by (<i>tKnotCount</i> - <i>tOrder</i>) control points.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginSurface(nobj);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_NORMAL);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_VERTEX_4);
|
||
/// Glu.gluEndSurface(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginSurface" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluEndSurface" />
|
||
/// <seealso cref="gluEndTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluNurbsSurface(GLUnurbs *nobj, GLint sknot_count, float *sknot, GLint tknot_count, GLfloat *tknot, GLint s_stride, GLint t_stride, GLfloat *ctlarray, GLint sorder, GLint torder, GLenum type);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, float[] control, int sOrder, int tOrder, int type);
|
||
#endregion gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, float[] control, int sOrder, int tOrder, int type)
|
||
|
||
#region gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, [In] float[ , ] control, int sOrder, int tOrder, int type)
|
||
/// <summary>
|
||
/// Defines the shape of a NURBS surface.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="sKnotCount">
|
||
/// The number of knots in the parametric u direction.
|
||
/// </param>
|
||
/// <param name="sKnots">
|
||
/// An array of <i>sKnotCount</i> nondecreasing knot values in the parametric
|
||
/// u direction
|
||
/// </param>
|
||
/// <param name="tKnotCount">
|
||
/// The number of knots in the parametric v direction.
|
||
/// </param>
|
||
/// <param name="tKnots">
|
||
/// An array of <i>tKnotCount</i> nondecreasing knot values in the parametric
|
||
/// v direction.
|
||
/// </param>
|
||
/// <param name="sStride">
|
||
/// The offset (as a number of single-precision floating-point values) between
|
||
/// successive control points in the parametric u direction in <i>control</i>.
|
||
/// </param>
|
||
/// <param name="tStride">
|
||
/// The offset (in single-precision floating-point values) between successive
|
||
/// control points in the parametric v direction in <i>control</i>.
|
||
/// </param>
|
||
/// <param name="control">
|
||
/// An array containing control points for the NURBS surface. The offsets
|
||
/// between successive control points in the parametric u and v directions are
|
||
/// given by <i>sStride</i> and <i>tStride</i>.
|
||
/// </param>
|
||
/// <param name="sOrder">
|
||
/// The order of the NURBS surface in the parametric u direction. The order is
|
||
/// one more than the degree, hence a surface that is cubic in u has a u order of
|
||
/// 4.
|
||
/// </param>
|
||
/// <param name="tOrder">
|
||
/// The order of the NURBS surface in the parametric v direction. The order is
|
||
/// one more than the degree, hence a surface that is cubic in v has a v order of
|
||
/// 4.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// The type of the surface. The <i>type</i> parameter can be any of the valid
|
||
/// two-dimensional evaluator types (such as <see cref="Gl.GL_MAP2_VERTEX_3" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <b>gluNurbsSurface</b> within a NURBS (Non-Uniform Rational B-Spline)
|
||
/// surface definition to describe the shape of a NURBS surface (before any
|
||
/// trimming). To mark the beginning of a NURBS surface definition, use the
|
||
/// <see cref="gluBeginSurface" /> command. To mark the end of a NURBS surface
|
||
/// definition, use the <see cref="gluEndSurface" /> command. Call
|
||
/// <b>gluNurbsSurface</b> within a NURBS surface definition only.
|
||
/// </para>
|
||
/// <para>
|
||
/// Positional, texture, and color coordinates are associated with a surface by
|
||
/// presenting each as a separate <b>gluNurbsSurface</b> between a
|
||
/// <see cref="gluBeginSurface" />/<see cref="gluEndSurface" /> pair. No more
|
||
/// than one call to <b>gluNurbsSurface</b> for each of color, position, and
|
||
/// texture data can be made within a single
|
||
/// <see cref="gluBeginSurface" />/<see cref="gluEndSurface" /> pair. Exactly
|
||
/// one call must be made to describe the position of the surface (a type of
|
||
/// <see cref="Gl.GL_MAP2_VERTEX_3" /> or <see cref="Gl.GL_MAP2_VERTEX_4" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A NURBS surface can be trimmed by using the commands
|
||
/// <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" /> and <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" /> between calls to
|
||
/// <see cref="gluBeginTrim" /> and <see cref="gluEndTrim" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that a <b>gluNurbsSurface</b> with <i>sKnotCount</i> knots in the u
|
||
/// direction and <i>tKnotCount</i> knots in the v direction with orders
|
||
/// <i>sOrder</i> and <i>tOrder</i> must have (<i>sKnotCount</i> - <i>sOrder</i>)
|
||
/// multiplied by (<i>tKnotCount</i> - <i>tOrder</i>) control points.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginSurface(nobj);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_NORMAL);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_VERTEX_4);
|
||
/// Glu.gluEndSurface(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginSurface" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluEndSurface" />
|
||
/// <seealso cref="gluEndTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluNurbsSurface(GLUnurbs *nobj, GLint sknot_count, float *sknot, GLint tknot_count, GLfloat *tknot, GLint s_stride, GLint t_stride, GLfloat *ctlarray, GLint sorder, GLint torder, GLenum type);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, float[,] control, int sOrder, int tOrder, int type);
|
||
#endregion gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, float[ , ] control, int sOrder, int tOrder, int type)
|
||
|
||
#region gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, [In] float[ , , ] control, int sOrder, int tOrder, int type)
|
||
/// <summary>
|
||
/// Defines the shape of a NURBS surface.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="sKnotCount">
|
||
/// The number of knots in the parametric u direction.
|
||
/// </param>
|
||
/// <param name="sKnots">
|
||
/// An array of <i>sKnotCount</i> nondecreasing knot values in the parametric
|
||
/// u direction
|
||
/// </param>
|
||
/// <param name="tKnotCount">
|
||
/// The number of knots in the parametric v direction.
|
||
/// </param>
|
||
/// <param name="tKnots">
|
||
/// An array of <i>tKnotCount</i> nondecreasing knot values in the parametric
|
||
/// v direction.
|
||
/// </param>
|
||
/// <param name="sStride">
|
||
/// The offset (as a number of single-precision floating-point values) between
|
||
/// successive control points in the parametric u direction in <i>control</i>.
|
||
/// </param>
|
||
/// <param name="tStride">
|
||
/// The offset (in single-precision floating-point values) between successive
|
||
/// control points in the parametric v direction in <i>control</i>.
|
||
/// </param>
|
||
/// <param name="control">
|
||
/// An array containing control points for the NURBS surface. The offsets
|
||
/// between successive control points in the parametric u and v directions are
|
||
/// given by <i>sStride</i> and <i>tStride</i>.
|
||
/// </param>
|
||
/// <param name="sOrder">
|
||
/// The order of the NURBS surface in the parametric u direction. The order is
|
||
/// one more than the degree, hence a surface that is cubic in u has a u order of
|
||
/// 4.
|
||
/// </param>
|
||
/// <param name="tOrder">
|
||
/// The order of the NURBS surface in the parametric v direction. The order is
|
||
/// one more than the degree, hence a surface that is cubic in v has a v order of
|
||
/// 4.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// The type of the surface. The <i>type</i> parameter can be any of the valid
|
||
/// two-dimensional evaluator types (such as <see cref="Gl.GL_MAP2_VERTEX_3" />
|
||
/// or <see cref="Gl.GL_MAP2_COLOR_4" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// Use <b>gluNurbsSurface</b> within a NURBS (Non-Uniform Rational B-Spline)
|
||
/// surface definition to describe the shape of a NURBS surface (before any
|
||
/// trimming). To mark the beginning of a NURBS surface definition, use the
|
||
/// <see cref="gluBeginSurface" /> command. To mark the end of a NURBS surface
|
||
/// definition, use the <see cref="gluEndSurface" /> command. Call
|
||
/// <b>gluNurbsSurface</b> within a NURBS surface definition only.
|
||
/// </para>
|
||
/// <para>
|
||
/// Positional, texture, and color coordinates are associated with a surface by
|
||
/// presenting each as a separate <b>gluNurbsSurface</b> between a
|
||
/// <see cref="gluBeginSurface" />/<see cref="gluEndSurface" /> pair. No more
|
||
/// than one call to <b>gluNurbsSurface</b> for each of color, position, and
|
||
/// texture data can be made within a single
|
||
/// <see cref="gluBeginSurface" />/<see cref="gluEndSurface" /> pair. Exactly
|
||
/// one call must be made to describe the position of the surface (a type of
|
||
/// <see cref="Gl.GL_MAP2_VERTEX_3" /> or <see cref="Gl.GL_MAP2_VERTEX_4" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// A NURBS surface can be trimmed by using the commands
|
||
/// <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" /> and <see cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" /> between calls to
|
||
/// <see cref="gluBeginTrim" /> and <see cref="gluEndTrim" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// Note that a <b>gluNurbsSurface</b> with <i>sKnotCount</i> knots in the u
|
||
/// direction and <i>tKnotCount</i> knots in the v direction with orders
|
||
/// <i>sOrder</i> and <i>tOrder</i> must have (<i>sKnotCount</i> - <i>sOrder</i>)
|
||
/// multiplied by (<i>tKnotCount</i> - <i>tOrder</i>) control points.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluBeginSurface(nobj);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_TEXTURE_COORD_2);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_NORMAL);
|
||
/// Glu.gluNurbsSurface(nobj, . . ., Gl.GL_MAP2_VERTEX_4);
|
||
/// Glu.gluEndSurface(nobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginSurface" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluEndSurface" />
|
||
/// <seealso cref="gluEndTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
/// <seealso cref="gluPwlCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, int)" />
|
||
// void APIENTRY gluNurbsSurface(GLUnurbs *nobj, GLint sknot_count, float *sknot, GLint tknot_count, GLfloat *tknot, GLint s_stride, GLint t_stride, GLfloat *ctlarray, GLint sorder, GLint torder, GLenum type);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, float[, ,] control, int sOrder, int tOrder, int type);
|
||
#endregion gluNurbsSurface([In] GLUnurbs nurb, int sKnotCount, [In] float[] sKnots, int tKnotCount, [In] float[] tKnots, int sStride, int tStride, float[ , , ] control, int sOrder, int tOrder, int type)
|
||
|
||
#region gluOrtho2D(double left, double right, double bottom, double top)
|
||
/// <summary>
|
||
/// Defines a 2D orthographic projection matrix.
|
||
/// </summary>
|
||
/// <param name="left">
|
||
/// The coordinates for the leftvertical clipping planes.
|
||
/// </param>
|
||
/// <param name="right">
|
||
/// The coordinates for the right vertical clipping planes.
|
||
/// </param>
|
||
/// <param name="bottom">
|
||
/// The coordinates for the bottom horizontal clipping planes.
|
||
/// </param>
|
||
/// <param name="top">
|
||
/// The coordinates for the top horizontal clipping planes.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// The <b>gluOrtho2D</b> function sets up a two-dimensional orthographic viewing
|
||
/// region. This is equivalent to calling <see cref="Gl.glOrtho" /> with
|
||
/// <i>near</i> = –1 and <i>far</i> = 1.
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glOrtho" />
|
||
/// <seealso cref="gluPerspective" />
|
||
// void APIENTRY gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluOrtho2D(double left, double right, double bottom, double top);
|
||
#endregion gluOrtho2D(double left, double right, double bottom, double top)
|
||
|
||
#region gluPartialDisk([In] GLUquadric quad, double innerRadius, double outerRadius, int slices, int loops, double startAngle, double sweepAngle)
|
||
/// <summary>
|
||
/// Draws an arc of a disk.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// A quadric object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="innerRadius">
|
||
/// The inner radius of the partial disk (can be zero).
|
||
/// </param>
|
||
/// <param name="outerRadius">
|
||
/// The outer radius of the partial disk.
|
||
/// </param>
|
||
/// <param name="slices">
|
||
/// The number of subdivisions around the z-axis.
|
||
/// </param>
|
||
/// <param name="loops">
|
||
/// The number of concentric rings about the origin into which the partial disk
|
||
/// is subdivided.
|
||
/// </param>
|
||
/// <param name="startAngle">
|
||
/// The starting angle, in degrees, of the disk portion.
|
||
/// </param>
|
||
/// <param name="sweepAngle">
|
||
/// The sweep angle, in degrees, of the disk portion.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluPartialDisk</b> 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
|
||
/// <i>startAngle</i> through <i>startAngle</i> + <i>sweepAngle</i> is included
|
||
/// (where 0 degrees is along the +y axis, 90 degrees along the +x axis, 180
|
||
/// degrees along the -y axis, and 270 degrees along the -x axis).
|
||
/// </para>
|
||
/// <para>
|
||
/// The partial disk has a radius of <i>outerRadius</i>, and contains a
|
||
/// concentric circular hole with a radius of <i>innerRadius</i>. If
|
||
/// <i>innerRadius</i> is 0, then no hole is generated. The partial disk is
|
||
/// subdivided around the z axis into slices (like pizza slices), and also about
|
||
/// the z axis into rings (as specified by <i>slices</i> and <i>loops</i>,
|
||
/// respectively).
|
||
/// </para>
|
||
/// <para>
|
||
/// With respect to orientation, the +z side of the partial disk is considered
|
||
/// to be outside (see <see cref="gluQuadricOrientation" />). This means that if
|
||
/// the orientation is set to <see cref="GLU_OUTSIDE" />, then any normals
|
||
/// generated point along the +z axis. Otherwise, they point along the -z axis.
|
||
/// </para>
|
||
/// <para>
|
||
/// If texturing is turned on (with <see cref="gluQuadricTexture" />), texture
|
||
/// coordinates are generated linearly such that where r = <i>outerRadius</i>,
|
||
/// the value at (r, 0, 0) is (1.0, 0.5), at (0, r, 0) it is (0.5, 1.0), at
|
||
/// (-r, 0, 0) it is (0.0, 0.5), and at (0, -r, 0) it is (0.5, 0.0).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluCylinder" />
|
||
/// <seealso cref="gluDisk" />
|
||
/// <seealso cref="gluNewQuadric" />
|
||
/// <seealso cref="gluQuadricOrientation" />
|
||
/// <seealso cref="gluQuadricTexture" />
|
||
/// <seealso cref="gluSphere" />
|
||
// void APIENTRY gluPartialDisk(GLUquadric *qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluPartialDisk([In] GLUquadric quad, double innerRadius, double outerRadius, int slices, int loops, double startAngle, double sweepAngle);
|
||
#endregion gluPartialDisk([In] GLUquadric quad, double innerRadius, double outerRadius, int slices, int loops, double startAngle, double sweepAngle)
|
||
|
||
#region gluPerspective(double fovY, double aspectRatio, double zNear, double zFar)
|
||
/// <summary>
|
||
/// Sets up a perspective projection matrix.
|
||
/// </summary>
|
||
/// <param name="fovY">
|
||
/// The field of view angle, in degrees, in the y-direction.
|
||
/// </param>
|
||
/// <param name="aspectRatio">
|
||
/// The aspect ratio that determines the field of view in the x-direction. The
|
||
/// aspect ratio is the ratio of x (width) to y (height).
|
||
/// </param>
|
||
/// <param name="zNear">
|
||
/// The distance from the viewer to the near clipping plane (always positive).
|
||
/// </param>
|
||
/// <param name="zFar">
|
||
/// The distance from the viewer to the far clipping plane (always positive).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// The <b>gluPerspective</b> subroutine specifies a viewing frustum into the
|
||
/// world coordinate system. Generally, the aspect ratio used with this
|
||
/// subroutine should match that of its associated viewport. For example, an
|
||
/// aspect ratio value of 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.
|
||
/// </para>
|
||
/// <para>
|
||
/// The matrix generated by <b>gluPerspective</b> is multipled by the current
|
||
/// matrix, just as if Gl.glMultMatrix* were called with the generated matrix.
|
||
/// To load the perspective matrix onto the current matrix stack instead,
|
||
/// precede the call to <b>gluPerspective</b> with a call to
|
||
/// <see cref="Gl.glLoadIdentity" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// Given f defined as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <c>f = cotangent(fovY / 2)</c>
|
||
/// </para>
|
||
/// <para>
|
||
/// The generated matrix is:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// ( f )
|
||
/// | ------ 0 0 0 |
|
||
/// | aspectRatio |
|
||
/// | |
|
||
/// | |
|
||
/// | 0 f 0 0 |
|
||
/// | |
|
||
/// | |
|
||
/// | zFar+zNear 2*zFar*zNear |
|
||
/// | 0 0 ---------- ------------ |
|
||
/// | zNear-zFar zNear-zFar |
|
||
/// | |
|
||
/// | |
|
||
/// | 0 0 -1 0 |
|
||
/// ( )
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Depth buffer precision is affected by the values specified for <i>zNear</i>
|
||
/// and <i>zFar</i>. The greater the ratio of <i>zFar</i> to <i>zNear</i> is,
|
||
/// the less effective the depth buffer will be at distinguishing between
|
||
/// surfaces that are near each other. If <c>r = zFar / zNear</c> roughly
|
||
/// <c>log2(r)</c> bits of depth buffer precision are lost. Because r approaches
|
||
/// infinity as <i>zNear</i> approaches 0, <i>zNear</i> must never be set to 0.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glFrustum" />
|
||
/// <seealso cref="Gl.glLoadIdentity" />
|
||
/// <seealso cref="gluOrtho2D" />
|
||
// void APIENTRY gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluPerspective(double fovY, double aspectRatio, double zNear, double zFar);
|
||
#endregion gluPerspective(double fovY, double aspectRatio, double zNear, double zFar)
|
||
|
||
#region gluPickMatrix(double x, double y, double width, double height, [In] int[] viewport)
|
||
/// <summary>
|
||
/// Defines a picking region.
|
||
/// </summary>
|
||
/// <param name="x">
|
||
/// The center of a picking region in x axis window coordinates.
|
||
/// </param>
|
||
/// <param name="y">
|
||
/// The center of a picking region in y axis window coordinates.
|
||
/// </param>
|
||
/// <param name="width">
|
||
/// The width of the picking region in window coordinates.
|
||
/// </param>
|
||
/// <param name="height">
|
||
/// The height of the picking region in window coordinates.
|
||
/// </param>
|
||
/// <param name="viewport">
|
||
/// The current viewport (as from a <see cref="Gl.glGetIntegerv(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluPickMatrix</b> 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
|
||
/// <b>gluPickMatrix</b> to restrict drawing to a small region around the cursor.
|
||
/// Then, enter selection mode (with <see cref="Gl.glRenderMode" />) and rerender
|
||
/// the scene. All primitives that would have been drawn near the cursor are
|
||
/// identified and stored in the selection buffer.
|
||
/// </para>
|
||
/// <para>
|
||
/// The matrix created by <b>gluPickMatrix</b> is multiplied by the current
|
||
/// matrix just as if Gl.glMultMatrix* is called with the generated matrix.
|
||
/// To effectively use the generated pick matrix for picking, first call
|
||
/// <see cref="Gl.glLoadIdentity" /> to load an identity matrix onto the
|
||
/// perspective matrix stack. Then call <b>gluPickMatrix</b>, and finally, call
|
||
/// a command (such as <see cref="gluPerspective" />) to multiply the perspective
|
||
/// matrix by the pick matrix.
|
||
/// </para>
|
||
/// <para>
|
||
/// When using <b>gluPickMatrix</b> to pick NURBS, be careful to turn off the
|
||
/// NURBS property <see cref="GLU_AUTO_LOAD_MATRIX" />. If
|
||
/// <see cref="GLU_AUTO_LOAD_MATRIX" /> is not turned off, then any NURBS
|
||
/// surface rendered is subdivided differently with the pick matrix than the way
|
||
/// it was subdivided without the pick matrix.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// When rendering a scene as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Gl.glMatrixMode(Gl.GL_PROJECTION);
|
||
/// Gl.glLoadIdentity();
|
||
/// Glu.gluPerspective(. . .);
|
||
/// Gl.glMatrixMode(Gl.GL_MODELVIEW);
|
||
/// // Draw the scene
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following code selects a portion of the viewport:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Gl.glMatrixMode(Gl.GL_PROJECTION);
|
||
/// Gl.glLoadIdentity();
|
||
/// Glu.gluPickMatrix(x, y, width, height, viewport);
|
||
/// Glu.gluPerspective(. . .);
|
||
/// Gl.glMatrixMode(Gl.GL_MODELVIEW);
|
||
/// // Draw the scene
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glLoadIdentity" />
|
||
/// <seealso cref="Gl.glRenderMode" />
|
||
/// <seealso cref="gluPerspective" />
|
||
// void APIENTRY gluPickMatrix(GLdouble x, GLdouble y, GLdouble width, GLdouble height, GLint viewport[4]);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluPickMatrix(double x, double y, double width, double height, [In] int[] viewport);
|
||
#endregion gluPickMatrix(double x, double y, double width, double height, [In] int[] viewport)
|
||
|
||
#region int gluProject(double objX, double objY, double objZ, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, out double winX, out double winY, out double winZ)
|
||
/// <summary>
|
||
/// Maps object coordinates to window coordinates.
|
||
/// </summary>
|
||
/// <param name="objX">
|
||
/// The object's x axis coordinate.
|
||
/// </param>
|
||
/// <param name="objY">
|
||
/// The object's y axis coordinate.
|
||
/// </param>
|
||
/// <param name="objZ">
|
||
/// The object's z axis coordinate.
|
||
/// </param>
|
||
/// <param name="modelMatrix">
|
||
/// The current modelview matrix (as from a <see cref="Gl.glGetDoublev(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="projectionMatrix">
|
||
/// The current projection matrix (as from a <see cref="Gl.glGetDoublev(int, IntPtr)" />
|
||
/// call).
|
||
/// </param>
|
||
/// <param name="viewport">
|
||
/// The current viewport (as from a <see cref="Gl.glGetIntegerv(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="winX">
|
||
/// The computed window's x axis coordinate.
|
||
/// </param>
|
||
/// <param name="winY">
|
||
/// The computed window's y axis coordinate.
|
||
/// </param>
|
||
/// <param name="winZ">
|
||
/// The computed window's z axis coordinate.
|
||
/// </param>
|
||
/// <returns>
|
||
/// Returns <see cref="Gl.GL_TRUE" /> indicates success, a return value of
|
||
/// <see cref="Gl.GL_FALSE" /> indicates failure.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluProject</b> transforms the specified object coordinates into window
|
||
/// coordinates using <i>modelMatrix</i>, <i>projectionMatrix</i>, and
|
||
/// <i>viewport</i>. The result is stored in <i>winX</i>, <i>winY</i>, and
|
||
/// <i>winZ</i>. A return value of <see cref="Gl.GL_TRUE" /> indicates success,
|
||
/// a return value of <see cref="Gl.GL_FALSE" /> indicates failure.
|
||
/// </para>
|
||
/// <para>
|
||
/// To compute the coordinates, let <c>v = (objX, objY, objZ, 1.0)</c>
|
||
/// represented as a matrix with 4 rows and 1 column. Then <b>gluProject</b>
|
||
/// computes v' as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <c>v' = P x M x v</c>
|
||
/// </para>
|
||
/// <para>
|
||
/// Where P is the current projection matrix <i>projectionMatrix</i>, M is the
|
||
/// current modelview matrix <i>modelMatrix</i> (both represented as 4x4 matrices
|
||
/// in column-major order) and 'x' represents matrix multiplication.
|
||
/// </para>
|
||
/// <para>
|
||
/// The window coordinates are then computed as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// winX = view(0) + view(2) * (v'(0) + 1) / 2
|
||
/// winY = view(1) + view(3) * (v'(1) + 1) / 2
|
||
/// winZ = (v'(2) + 1) / 2
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glGetDoublev(int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetIntegerv(int, IntPtr)" />
|
||
/// <seealso cref="gluUnProject" />
|
||
// int APIENTRY gluProject(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *winx, GLdouble *winy, GLdouble *winz);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluProject(double objX, double objY, double objZ, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, out double winX, out double winY, out double winZ);
|
||
#endregion int gluProject(double objX, double objY, double objZ, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, out double winX, out double winY, out double winZ)
|
||
|
||
#region gluPwlCurve([In] GLUnurbs nurb, int count, [In] float[] data, int stride, int type)
|
||
/// <summary>
|
||
/// Describes a piecewise linear NURBS trimming curve.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="count">
|
||
/// The number of points on the curve.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// An array containing the curve points.
|
||
/// </param>
|
||
/// <param name="stride">
|
||
/// The offset (a number of single-precision floating-point values) between
|
||
/// points on the curve.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// The type of curve. Must be either <see cref="GLU_MAP1_TRIM_2" /> or
|
||
/// <see cref="GLU_MAP1_TRIM_3" />.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluPwlCurve</b> describes a piecewise linear trimming curve for a NURBS
|
||
/// surface. A piecewise linear curve consists of a list of coordinates of
|
||
/// points in the parameter space for the NURBS surface to be trimmed. These
|
||
/// points are connected with line segments to form a curve. If the curve is an
|
||
/// approximation to a curve that is not piecewise linear, the points should be
|
||
/// close enough in parameter space that the resulting path appears curved at the
|
||
/// resolution used in the application.
|
||
/// </para>
|
||
/// <para>
|
||
/// If type is <see cref="GLU_MAP1_TRIM_2" />, then it describes a curve in
|
||
/// two-dimensional (u and v) parameter space. If it is
|
||
/// <see cref="GLU_MAP1_TRIM_3" />, then it describes a curve in two-dimensional
|
||
/// homogeneous (u, v, and w) parameter space. See the
|
||
/// <see cref="gluBeginTrim" /> reference page for more information about
|
||
/// trimming curves.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// To describe a trim curve that closely follows the contours of a NURBS
|
||
/// surface, call <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginCurve" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
// void APIENTRY gluPwlCurve(GLUnurbs *nobj, GLint count, GLfloat *array, GLint stride, GLenum type);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluPwlCurve([In] GLUnurbs nurb, int count, [In] float[] data, int stride, int type);
|
||
#endregion gluPwlCurve([In] GLUnurbs nurb, int count, [In] float[] data, int stride, int type)
|
||
|
||
#region gluPwlCurve([In] GLUnurbs nurb, int count, [In] float[ , ] data, int stride, int type)
|
||
/// <summary>
|
||
/// Describes a piecewise linear NURBS trimming curve.
|
||
/// </summary>
|
||
/// <param name="nurb">
|
||
/// The NURBS object (created with <see cref="gluNewNurbsRenderer" />).
|
||
/// </param>
|
||
/// <param name="count">
|
||
/// The number of points on the curve.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// An array containing the curve points.
|
||
/// </param>
|
||
/// <param name="stride">
|
||
/// The offset (a number of single-precision floating-point values) between
|
||
/// points on the curve.
|
||
/// </param>
|
||
/// <param name="type">
|
||
/// The type of curve. Must be either <see cref="GLU_MAP1_TRIM_2" /> or
|
||
/// <see cref="GLU_MAP1_TRIM_3" />.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluPwlCurve</b> describes a piecewise linear trimming curve for a NURBS
|
||
/// surface. A piecewise linear curve consists of a list of coordinates of
|
||
/// points in the parameter space for the NURBS surface to be trimmed. These
|
||
/// points are connected with line segments to form a curve. If the curve is an
|
||
/// approximation to a curve that is not piecewise linear, the points should be
|
||
/// close enough in parameter space that the resulting path appears curved at the
|
||
/// resolution used in the application.
|
||
/// </para>
|
||
/// <para>
|
||
/// If type is <see cref="GLU_MAP1_TRIM_2" />, then it describes a curve in
|
||
/// two-dimensional (u and v) parameter space. If it is
|
||
/// <see cref="GLU_MAP1_TRIM_3" />, then it describes a curve in two-dimensional
|
||
/// homogeneous (u, v, and w) parameter space. See the
|
||
/// <see cref="gluBeginTrim" /> reference page for more information about
|
||
/// trimming curves.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// To describe a trim curve that closely follows the contours of a NURBS
|
||
/// surface, call <see cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluBeginCurve" />
|
||
/// <seealso cref="gluBeginTrim" />
|
||
/// <seealso cref="gluNewNurbsRenderer" />
|
||
/// <seealso cref="gluNurbsCurve(Tao.OpenGl.Glu.GLUnurbs, int, float[], int, float[], int, int)" />
|
||
// void APIENTRY gluPwlCurve(GLUnurbs *nobj, GLint count, GLfloat *array, GLint stride, GLenum type);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluPwlCurve([In] GLUnurbs nurb, int count, [In] float[,] data, int stride, int type);
|
||
#endregion gluPwlCurve([In] GLUnurbs nurb, int count, [In] float[ , ] data, int stride, int type)
|
||
|
||
#region gluQuadricCallback([In] GLUquadric quad, int which, [In] QuadricErrorCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a quadric object.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// The quadric object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// The callback being defined. The only valid value is
|
||
/// <see cref="GLU_ERROR" />.
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluQuadricCallback</b> is used to define a new callback to be used by a
|
||
/// quadrics object. If the specified callback is already defined, then it is
|
||
/// replaced. If <i>func</i> is <c>null</c>, then any existing callback is
|
||
/// erased.
|
||
/// </para>
|
||
/// <para>
|
||
/// The one legal callback is <see cref="GLU_ERROR" />:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_ERROR" /></term>
|
||
/// <description>
|
||
/// The function is called when an error is encountered. Its single
|
||
/// argument is of type <see cref="int" />, and it indicates the
|
||
/// specific error that occurred. Character strings describing these
|
||
/// errors can be retrieved with the <see cref="gluErrorString" />
|
||
/// call.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="QuadricErrorCallback" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewQuadric" />
|
||
// void APIENTRY gluQuadricCallback(GLUquadric *qobj, GLenum which, void (CALLBACK* fn)());
|
||
public static void gluQuadricCallback([In] GLUquadric quad, int which, [In] QuadricErrorCallback func)
|
||
{
|
||
quadricErrorCallback = func;
|
||
__gluQuadricCallback(quad, which, quadricErrorCallback);
|
||
|
||
}
|
||
#endregion gluQuadricCallback([In] GLUquadric quad, int which, [In] QuadricErrorCallback func)
|
||
|
||
#region gluQuadricDrawStyle([In] GLUquadric quad, int drawStyle)
|
||
/// <summary>
|
||
/// Specifies the draw style desired for quadrics.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// The quadric object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="drawStyle">
|
||
/// <para>
|
||
/// The desired draw style. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_FILL" /></term>
|
||
/// <description>
|
||
/// Quadrics are rendered with polygon primitives. The polygons are
|
||
/// drawn in a counterclockwise fashion with respect to their normals
|
||
/// (as defined with <see cref="gluQuadricOrientation" />).
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_LINE" /></term>
|
||
/// <description>
|
||
/// Quadrics are rendered as a set of lines.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_SILHOUETTE" /></term>
|
||
/// <description>
|
||
/// Quadrics are rendered as a set of lines, except that edges
|
||
/// separating coplanar faces will not be drawn.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_POINT" /></term>
|
||
/// <description>
|
||
/// Quadrics are rendered as a set of points.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluQuadricDrawStyle</b> specifies the draw style for quadrics rendered
|
||
/// with <i>quad</i>.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewQuadric" />
|
||
/// <seealso cref="gluQuadricNormals" />
|
||
/// <seealso cref="gluQuadricOrientation" />
|
||
/// <seealso cref="gluQuadricTexture" />
|
||
// void APIENTRY gluQuadricDrawStyle(GLUquadric *quadObject, GLenum drawStyle);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluQuadricDrawStyle([In] GLUquadric quad, int drawStyle);
|
||
#endregion gluQuadricDrawStyle([In] GLUquadric quad, int drawStyle)
|
||
|
||
#region gluQuadricNormals([In] GLUquadric quad, int normal)
|
||
/// <summary>
|
||
/// Specifies what kind of normals are to be used for quadrics.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// The quadric object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="normal">
|
||
/// <para>
|
||
/// The desired type of normals. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_NONE" /></term>
|
||
/// <description>
|
||
/// No normals are generated.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_FLAT" /></term>
|
||
/// <description>
|
||
/// One normal is generated for every facet of a quadric.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_SMOOTH" /></term>
|
||
/// <description>
|
||
/// One normal is generated for every vertex of a quadric. This is
|
||
/// the default value.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluQuadricNormals</b> specifies what kind of normals are desired for
|
||
/// quadrics rendered with <i>quad</i>.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewQuadric" />
|
||
/// <seealso cref="gluQuadricDrawStyle" />
|
||
/// <seealso cref="gluQuadricOrientation" />
|
||
/// <seealso cref="gluQuadricTexture" />
|
||
// void APIENTRY gluQuadricNormals(GLUquadric *quadObject, GLenum normals);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluQuadricNormals([In] GLUquadric quad, int normal);
|
||
#endregion gluQuadricNormals([In] GLUquadric quad, int normal)
|
||
|
||
#region gluQuadricOrientation([In] GLUquadric quad, int orientation)
|
||
/// <summary>
|
||
/// Specifies inside or outside orientation for quadrics.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// The quadric object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="orientation">
|
||
/// <para>
|
||
/// The desired orientation. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_OUTSIDE" /></term>
|
||
/// <description>
|
||
/// Draw quadrics with normals pointing outward. This is the default
|
||
/// value.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_INSIDE" /></term>
|
||
/// <description>
|
||
/// Draw quadrics with normals pointing inward.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluQuadricOrientation</b> specifies what kind of orientation is desired
|
||
/// for quadrics rendered with <i>quad</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// The interpretation of outward and inward depends on the quadric being drawn.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewQuadric" />
|
||
/// <seealso cref="gluQuadricDrawStyle" />
|
||
/// <seealso cref="gluQuadricNormals" />
|
||
/// <seealso cref="gluQuadricTexture" />
|
||
// void APIENTRY gluQuadricOrientation(GLUquadric *quadObject, GLenum orientation);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluQuadricOrientation([In] GLUquadric quad, int orientation);
|
||
#endregion gluQuadricOrientation([In] GLUquadric quad, int orientation)
|
||
|
||
#region gluQuadricTexture([In] GLUquadric quad, int texture)
|
||
/// <summary>
|
||
/// Specifies whether quadrics are to be textured.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// The quadric object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="texture">
|
||
/// <para>
|
||
/// A flag indicating whether texture coordinates are to be generated. The
|
||
/// following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="Gl.GL_TRUE" /></term>
|
||
/// <description>
|
||
/// Generate texture coordinates.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="Gl.GL_FALSE" /></term>
|
||
/// <description>
|
||
/// Do not generate texture coordinates. This is the default value.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluQuadricTexture</b> specifies if texture coordinates should be generated
|
||
/// for quadrics rendered with <i>quad</i>.
|
||
/// </para>
|
||
/// <para>
|
||
/// The manner in which texture coordinates are generated depends upon the
|
||
/// specific quadric rendered.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewQuadric" />
|
||
/// <seealso cref="gluQuadricDrawStyle" />
|
||
/// <seealso cref="gluQuadricNormals" />
|
||
/// <seealso cref="gluQuadricOrientation" />
|
||
// void APIENTRY gluQuadricTexture(GLUquadric *quadObject, GLboolean textureCoords);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluQuadricTexture([In] GLUquadric quad, int texture);
|
||
#endregion gluQuadricTexture([In] GLUquadric quad, int texture)
|
||
|
||
#region int gluScaleImage(int format, int widthIn, int heightIn, int typeIn, [In] IntPtr dataIn, int widthOut, int heightOut, int typeOut, [Out] IntPtr dataOut)
|
||
/// <summary>
|
||
/// Scales an image to an arbitrary size.
|
||
/// </summary>
|
||
/// <param name="format">
|
||
/// The format of the pixel data. The following symbolic values are valid:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_STENCIL_INDEX" />,
|
||
/// <see cref="Gl.GL_DEPTH_COMPONENT" />, <see cref="Gl.GL_RED" />,
|
||
/// <see cref="Gl.GL_GREEN" />, <see cref="Gl.GL_BLUE" />,
|
||
/// <see cref="Gl.GL_ALPHA" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_BGR_EXT" />,
|
||
/// <see cref="Gl.GL_BGRA_EXT" />, <see cref="Gl.GL_LUMINANCE" />, and
|
||
/// <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="widthIn">
|
||
/// The width of the source image that is scaled.
|
||
/// </param>
|
||
/// <param name="heightIn">
|
||
/// The height of the source image that is scaled.
|
||
/// </param>
|
||
/// <param name="typeIn">
|
||
/// The data type for <i>dataIn</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="dataIn">
|
||
/// A pointer to the source image.
|
||
/// </param>
|
||
/// <param name="widthOut">
|
||
/// The width of the destination image.
|
||
/// </param>
|
||
/// <param name="heightOut">
|
||
/// The height of the destination image.
|
||
/// </param>
|
||
/// <param name="typeOut">
|
||
/// The data type for <i>dataOut</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="dataOut">
|
||
/// A pointer to the destination image.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluScaleImage</b> scales a pixel image using the appropriate pixel store
|
||
/// modes to unpack data from the source image and pack data into the
|
||
/// destination image.
|
||
/// </para>
|
||
/// <para>
|
||
/// When shrinking an image, <b>gluScaleImage</b> uses a box filter to sample the
|
||
/// source image and create pixels for the destination image. When magnifying an
|
||
/// image, the pixels from the source image are linearly interpolated to create
|
||
/// the destination image.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glReadPixels(int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>format</i>, <i>typeIn</i>, and
|
||
/// <i>typeOut</i> parameters.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>widthIn</i>,
|
||
/// <i>heightIn</i>, <i>widthOut</i>, or <i>heightOut</i> is negative.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i>, <i>typeIn</i>,
|
||
/// or <i>typeOut</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glReadPixels(int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// int APIENTRY gluScaleImage(GLenum format, GLint widthin, GLint heightin, GLenum typein, const void *datain, GLint widthout, GLint heightout, GLenum typeout, void *dataout);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluScaleImage(int format, int widthIn, int heightIn, int typeIn, [In] IntPtr dataIn, int widthOut, int heightOut, int typeOut, [Out] IntPtr dataOut);
|
||
#endregion int gluScaleImage(int format, int widthIn, int heightIn, int typeIn, [In] IntPtr dataIn, int widthOut, int heightOut, int typeOut, [Out] IntPtr dataOut)
|
||
|
||
#region int gluScaleImage(int format, int widthIn, int heightIn, int typeIn, [In] byte[] dataIn, int widthOut, int heightOut, int typeOut, [Out] byte[] dataOut)
|
||
/// <summary>
|
||
/// Scales an image to an arbitrary size.
|
||
/// </summary>
|
||
/// <param name="format">
|
||
/// The format of the pixel data. The following symbolic values are valid:
|
||
/// <see cref="Gl.GL_COLOR_INDEX" />, <see cref="Gl.GL_STENCIL_INDEX" />,
|
||
/// <see cref="Gl.GL_DEPTH_COMPONENT" />, <see cref="Gl.GL_RED" />,
|
||
/// <see cref="Gl.GL_GREEN" />, <see cref="Gl.GL_BLUE" />,
|
||
/// <see cref="Gl.GL_ALPHA" />, <see cref="Gl.GL_RGB" />,
|
||
/// <see cref="Gl.GL_RGBA" />, <see cref="Gl.GL_BGR_EXT" />,
|
||
/// <see cref="Gl.GL_BGRA_EXT" />, <see cref="Gl.GL_LUMINANCE" />, and
|
||
/// <see cref="Gl.GL_LUMINANCE_ALPHA" />.
|
||
/// </param>
|
||
/// <param name="widthIn">
|
||
/// The width of the source image that is scaled.
|
||
/// </param>
|
||
/// <param name="heightIn">
|
||
/// The height of the source image that is scaled.
|
||
/// </param>
|
||
/// <param name="typeIn">
|
||
/// The data type for <i>dataIn</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="dataIn">
|
||
/// A pointer to the source image.
|
||
/// </param>
|
||
/// <param name="widthOut">
|
||
/// The width of the destination image.
|
||
/// </param>
|
||
/// <param name="heightOut">
|
||
/// The height of the destination image.
|
||
/// </param>
|
||
/// <param name="typeOut">
|
||
/// The data type for <i>dataOut</i>. Must be one of
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE" />, <see cref="Gl.GL_BYTE" />,
|
||
/// <see cref="Gl.GL_BITMAP" />, <see cref="Gl.GL_UNSIGNED_SHORT" />,
|
||
/// <see cref="Gl.GL_SHORT" />, <see cref="Gl.GL_UNSIGNED_INT" />,
|
||
/// <see cref="Gl.GL_INT" />, <see cref="Gl.GL_FLOAT" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" />.
|
||
/// </param>
|
||
/// <param name="dataOut">
|
||
/// A pointer to the destination image.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluScaleImage</b> scales a pixel image using the appropriate pixel store
|
||
/// modes to unpack data from the source image and pack data into the
|
||
/// destination image.
|
||
/// </para>
|
||
/// <para>
|
||
/// When shrinking an image, <b>gluScaleImage</b> uses a box filter to sample the
|
||
/// source image and create pixels for the destination image. When magnifying an
|
||
/// image, the pixels from the source image are linearly interpolated to create
|
||
/// the destination image.
|
||
/// </para>
|
||
/// <para>
|
||
/// A return value of zero indicates success, otherwise a GLU error code is
|
||
/// returned (see <see cref="gluErrorString" />).
|
||
/// </para>
|
||
/// <para>
|
||
/// See the <see cref="Gl.glReadPixels(int, int, int, int, int, int, object)" /> reference page for a description of
|
||
/// the acceptable values for the <i>format</i>, <i>typeIn</i>, and
|
||
/// <i>typeOut</i> parameters.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// Formats <see cref="Gl.GL_BGR" />, and <see cref="Gl.GL_BGRA" />, and types
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" />,
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" />, and
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> are only available if the GL
|
||
/// version is 1.2 or greater.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>ERRORS</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_VALUE" /> is returned if <i>widthIn</i>,
|
||
/// <i>heightIn</i>, <i>widthOut</i>, or <i>heightOut</i> is negative.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_ENUM" /> is returned if <i>format</i>, <i>typeIn</i>,
|
||
/// or <i>typeOut</i> is not legal.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_BYTE_3_3_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_BYTE_2_3_3_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_5_6_5_REV" /> and <i>format</i> is not
|
||
/// <see cref="Gl.GL_RGB" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_4_4_4_4_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_SHORT_5_5_5_1" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_SHORT_1_5_5_5_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_8_8_8_8_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <see cref="GLU_INVALID_OPERATION" /> is returned if <i>typeIn</i> or
|
||
/// <i>typeOut</i> is <see cref="Gl.GL_UNSIGNED_INT_10_10_10_2" /> or
|
||
/// <see cref="Gl.GL_UNSIGNED_INT_2_10_10_10_REV" /> and <i>format</i> is neither
|
||
/// <see cref="Gl.GL_RGBA" /> nor <see cref="Gl.GL_BGRA" />.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glDrawPixels(int, int, int, int, object)" />
|
||
/// <seealso cref="Gl.glReadPixels(int, int, int, int, int, int, object)" />
|
||
/// <seealso cref="gluBuild1DMipmaps(int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild2DMipmaps(int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluBuild3DMipmaps(int, int, int, int, int, int, int, byte[])" />
|
||
/// <seealso cref="gluErrorString" />
|
||
// int APIENTRY gluScaleImage(GLenum format, GLint widthin, GLint heightin, GLenum typein, const void *datain, GLint widthout, GLint heightout, GLenum typeout, void *dataout);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluScaleImage(int format, int widthIn, int heightIn, int typeIn, [In] byte[] dataIn, int widthOut, int heightOut, int typeOut, [Out] byte[] dataOut);
|
||
#endregion int gluScaleImage(int format, int widthIn, int heightIn, int typeIn, [In] byte[] dataIn, int widthOut, int heightOut, int typeOut, [Out] byte[] dataOut)
|
||
|
||
#region gluSphere([In] GLUquadric quad, double radius, int slices, int stacks)
|
||
/// <summary>
|
||
/// Draws a sphere.
|
||
/// </summary>
|
||
/// <param name="quad">
|
||
/// The quadric object (created with <see cref="gluNewQuadric" />).
|
||
/// </param>
|
||
/// <param name="radius">
|
||
/// The radius of the sphere.
|
||
/// </param>
|
||
/// <param name="slices">
|
||
/// The number of subdivisions around the z-axis (similar to lines of longitude.
|
||
/// </param>
|
||
/// <param name="stacks">
|
||
/// The number of subdivisions along the z-axis (similar to lines of latitude).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluSphere</b> 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).
|
||
/// </para>
|
||
/// <para>
|
||
/// If the orientation is set to <see cref="GLU_OUTSIDE" /> (with
|
||
/// <see cref="gluQuadricOrientation" />), then any normals generated point away
|
||
/// from the center of the sphere. Otherwise, they point toward the center of
|
||
/// the sphere.
|
||
/// </para>
|
||
/// <para>
|
||
/// If texturing is turned on (with <see cref="gluQuadricTexture" />), then
|
||
/// texture coordinates are generated so that t ranges from 0.0 at z = -radius
|
||
/// to 1.0 at z = radius (t increases linearly along longitudinal lines), and
|
||
/// s ranges from 0.0 at the +y axis, to 0.25 at the +x axis, to 0.5 at the -y
|
||
/// axis, to 0.75 at the -x axis, and back to 1.0 at the +y axis.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluCylinder" />
|
||
/// <seealso cref="gluDisk" />
|
||
/// <seealso cref="gluNewQuadric" />
|
||
/// <seealso cref="gluPartialDisk" />
|
||
/// <seealso cref="gluQuadricOrientation" />
|
||
/// <seealso cref="gluQuadricTexture" />
|
||
// void APIENTRY gluSphere(GLUquadric *qobj, GLdouble radius, GLint slices, GLint stacks);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluSphere([In] GLUquadric quad, double radius, int slices, int stacks);
|
||
#endregion gluSphere([In] GLUquadric quad, double radius, int slices, int stacks)
|
||
|
||
#region gluTessBeginContour([In] GLUtesselator tess)
|
||
/// <summary>
|
||
/// Delimits a contour description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluTessBeginContour</b> and <see cref="gluTessEndContour" /> delimit the
|
||
/// definition of a polygon contour. Within each
|
||
/// <b>gluTessBeginContour</b>/<see cref="gluTessEndContour" /> pair, there can
|
||
/// be zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />. The vertices specify
|
||
/// a closed contour (the last vertex of each contour is automatically linked to
|
||
/// the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" /> reference page for more
|
||
/// details. <b>gluTessBeginContour</b> can only be called between
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> and <see cref="gluTessEndPolygon" />.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndContour" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginContour(GLUtesselator *tess);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginContour([In] GLUtesselator tess);
|
||
#endregion gluTessBeginContour([In] GLUtesselator tess)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[ , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[ , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[ , , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[, ,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] byte[ , , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] double[] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] double[] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] double[] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] double[ , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] double[,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] double[ , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] double[ , , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] double[, ,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] double[ , , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] short[] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] short[] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] short[] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] short[ , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] short[,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] short[ , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] short[ , , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] short[, ,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] short[ , , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] int[] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] int[] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] int[] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] int[ , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] int[,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] int[ , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] int[ , , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] int[, ,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] int[ , , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] float[] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] float[] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] float[] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] float[ , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] float[,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] float[ , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] float[ , , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] float[, ,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] float[ , , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[ , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[ , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[ , , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[, ,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] ushort[ , , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[ , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[ , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[ , , ] data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[, ,] data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] uint[ , , ] data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] IntPtr data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] IntPtr data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] IntPtr data)
|
||
|
||
#region gluTessBeginPolygon([In] GLUtesselator tess, [In] void *data)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer to a programmer defined–polygon data structure.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessBeginPolygon</b> and <see cref="gluTessEndPolygon" /> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <b>gluTessBeginPolygon</b>/<see cref="gluTessEndPolygon" /> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> is a pointer to a user-defined data structure. If the
|
||
/// appropriate callback(s) are specified (see <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />),
|
||
/// then this pointer is returned to the callback function(s). Thus, it is a
|
||
/// convenient way to store per-polygon information.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <see cref="gluTessEndPolygon" /> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessBeginPolygon(GLUtesselator *tess, void *polygon_data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern void gluTessBeginPolygon([In] GLUtesselator tess, [In] void* data);
|
||
#endregion gluTessBeginPolygon([In] GLUtesselator tess, [In] void *data)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginCallback func)
|
||
{
|
||
tessBeginCallback = func;
|
||
__gluTessCallback(tess, which, tessBeginCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginDataCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginDataCallback func)
|
||
{
|
||
tessBeginDataCallback = func;
|
||
__gluTessCallback(tess, which, tessBeginDataCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessBeginDataCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback func)
|
||
{
|
||
tessCombineCallback = func;
|
||
__gluTessCallback(tess, which, tessCombineCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback1 func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback1 func)
|
||
{
|
||
tessCombineCallback1 = func;
|
||
__gluTessCallback(tess, which, tessCombineCallback1);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineCallback1 func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineDataCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineDataCallback func)
|
||
{
|
||
tessCombineDataCallback = func;
|
||
__gluTessCallback(tess, which, tessCombineDataCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessCombineDataCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagCallback func)
|
||
{
|
||
tessEdgeFlagCallback = func;
|
||
__gluTessCallback(tess, which, tessEdgeFlagCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagDataCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagDataCallback func)
|
||
{
|
||
tessEdgeFlagDataCallback = func;
|
||
__gluTessCallback(tess, which, tessEdgeFlagDataCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessEdgeFlagDataCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndCallback func)
|
||
{
|
||
tessEndCallback = func;
|
||
__gluTessCallback(tess, which, tessEndCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndDataCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndDataCallback func)
|
||
{
|
||
tessEndDataCallback = func;
|
||
__gluTessCallback(tess, which, tessEndDataCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessEndDataCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorCallback func)
|
||
{
|
||
tessErrorCallback = func;
|
||
__gluTessCallback(tess, which, tessErrorCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorDataCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorDataCallback func)
|
||
{
|
||
tessErrorDataCallback = func;
|
||
__gluTessCallback(tess, which, tessErrorDataCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessErrorDataCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback func)
|
||
{
|
||
tessVertexCallback = func;
|
||
__gluTessCallback(tess, which, tessVertexCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback1 func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback1 func)
|
||
{
|
||
tessVertexCallback1 = func;
|
||
__gluTessCallback(tess, which, tessVertexCallback1);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexCallback1 func)
|
||
|
||
#region gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexDataCallback func)
|
||
/// <summary>
|
||
/// Defines a callback for a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The callback being defined. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN" /></term>
|
||
/// <description>
|
||
/// The begin callback is invoked like <see cref="Gl.glBegin" /> to
|
||
/// indicate the start of a (triangle) primitive. The function takes
|
||
/// a single argument of type <see cref="int" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_FALSE" />, then the argument is set to either
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" />,
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" />, or
|
||
/// <see cref="Gl.GL_TRIANGLES" />. If the
|
||
/// <see cref="GLU_TESS_BOUNDARY_ONLY" /> property is set to
|
||
/// <see cref="Gl.GL_TRUE" />, then the argument will be set to
|
||
/// <see cref="Gl.GL_LINE_LOOP" />. The delegate prototype for this
|
||
/// callback is <see cref="TessBeginCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BEGIN_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_BEGIN" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessBeginDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The combine callback is called to create a new vertex when
|
||
/// the tessellation detects an intersection, or wishes to merge
|
||
/// features. The function takes four arguments: an array of
|
||
/// three elements each of type <see cref="double" />, an
|
||
/// array of four pointers, an array of four elements each of
|
||
/// type <see cref="float" />, and a pointer to a pointer. The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessCombineCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The vertex is defined as a linear combination of up to four
|
||
/// existing vertices, stored in <i>vertexData</i>. The
|
||
/// coefficients of the linear combination are given by
|
||
/// <i>weight</i>; these weights always add up to 1. All
|
||
/// vertex pointers are valid even when some of the weights are
|
||
/// 0. <i>coordinates</i> gives the location of the new vertex.
|
||
/// </para>
|
||
/// <para>
|
||
/// The user must allocate another vertex, interpolate parameters
|
||
/// using <i>vertexData</i> and <i>weight</i>, and return the new
|
||
/// vertex pointer in <i>outData</i>. This handle is supplied
|
||
/// during rendering callbacks. The user is responsible for
|
||
/// freeing the memory some time after
|
||
/// <see cref="gluTessEndPolygon" /> is called.
|
||
/// </para>
|
||
/// <para>
|
||
/// For example, if the polygon lies in an arbitrary plane in
|
||
/// 3-space, and a color is associated with each vertex, the
|
||
/// <b>GLU_TESS_COMBINE</b> callback might look like this:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// void myCombine(GLdouble coords[3], VERTEX *d[4], GLfloat w[4], VERTEX **dataOut) {
|
||
/// VERTEX *newVertex = new_vertex();
|
||
/// newVertex->x = coords[0];
|
||
/// newVertex->y = coords[1];
|
||
/// newVertex->z = coords[2];
|
||
/// newVertex->r = w[0]*d[0]->r + w[1]*d[1]->r + w[2]*d[2]->r +
|
||
/// w[3]*d[3]->r;
|
||
/// newVertex->g = w[0]*d[0]->g + w[1]*d[1]->g + w[2]*d[2]->g +
|
||
/// w[3]*d[3]->g;
|
||
/// newVertex->b = w[0]*d[0]->b + w[1]*d[1]->b + w[2]*d[2]->b +
|
||
/// w[3]*d[3]->b;
|
||
/// newVertex->a = w[0]*d[0]->a + w[1]*d[1]->a + w[2]*d[2]->a +
|
||
/// w[3]*d[3]->a;
|
||
/// *dataOut = newVertex;
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// If the tessellation detects an intersection, then the
|
||
/// <b>GLU_TESS_COMBINE</b> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback (see below)
|
||
/// must be defined, and it must write a non-NULL pointer into
|
||
/// <i>outData</i>. Otherwise the
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error occurs,
|
||
/// and no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_COMBINE_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_COMBINE" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessCombineDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The edge flag callback is similar to
|
||
/// <see cref="Gl.glEdgeFlag" />. The function takes a single
|
||
/// boolean flag that indicates which edges lie on the polygon
|
||
/// boundary. If the flag is <see cref="Gl.GL_TRUE" />, then
|
||
/// each vertex that follows begins an edge that lies on the
|
||
/// polygon boundary, that is, an edge that separates an interior
|
||
/// region from an exterior one. If the flag is
|
||
/// <see cref="Gl.GL_FALSE" />, then each vertex that follows
|
||
/// begins an edge that lies in the polygon interior. The edge
|
||
/// flag callback (if defined) is invoked before the first
|
||
/// vertex callback.
|
||
/// </para>
|
||
/// <para>
|
||
/// Since triangle fans and triangle strips do not support edge
|
||
/// flags, the begin callback is not called with
|
||
/// <see cref="Gl.GL_TRIANGLE_FAN" /> or
|
||
/// <see cref="Gl.GL_TRIANGLE_STRIP" /> if a non-NULL edge flag
|
||
/// callback is provided. (If the callback is initialized to
|
||
/// <c>null</c>, there is no impact on performance). Instead,
|
||
/// the fans and strips are converted to independent triangles.
|
||
/// The delegate prototype for this callback is
|
||
/// <see cref="TessEdgeFlagCallback" />.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_EDGE_FLAG_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_EDGE_FLAG" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEdgeFlagDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END" /></term>
|
||
/// <description>
|
||
/// The end callback serves the same purpose as
|
||
/// <see cref="Gl.glEnd" />. It indicates the end of a primitive and
|
||
/// it takes no arguments. The delegate prototype for this callback
|
||
/// is <see cref="TessEndCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_END_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_END" /> callback except that
|
||
/// it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessEndDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// The error callback is called when an error is encountered.
|
||
/// The one argument is of type <see cref="int" />; it
|
||
/// indicates the specific error that occurred and will be set to
|
||
/// one of <see cref="GLU_TESS_MISSING_BEGIN_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_POLYGON" />,
|
||
/// <see cref="GLU_TESS_MISSING_BEGIN_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_MISSING_END_CONTOUR" />,
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" />,
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> or
|
||
/// <see cref="GLU_OUT_OF_MEMORY" />. Character strings
|
||
/// describing these errors can be retrieved with the
|
||
/// <see cref="gluErrorString" /> call. The delegate prototype
|
||
/// for this callback is <see cref="TessErrorCallback" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// The GLU library will recover from the first four errors by
|
||
/// inserting the missing call(s).
|
||
/// <see cref="GLU_TESS_COORD_TOO_LARGE" /> indicates that some
|
||
/// vertex coordinate exceeded the predefined constant
|
||
/// <see cref="GLU_TESS_MAX_COORD" /> in absolute value, and that
|
||
/// the value has been clamped. (Coordinate values must be small
|
||
/// enough so that two can be multiplied together without
|
||
/// overflow.) <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" />
|
||
/// indicates that the tessellation detected an intersection
|
||
/// between two edges in the input data, and the
|
||
/// <see cref="GLU_TESS_COMBINE" /> or
|
||
/// <see cref="GLU_TESS_COMBINE_DATA" /> callback was not
|
||
/// provided. No output is generated.
|
||
/// <see cref="GLU_OUT_OF_MEMORY" /> indicates that there is not
|
||
/// enough memory so no output is generated.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_ERROR_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_ERROR" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessErrorDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX" /></term>
|
||
/// <description>
|
||
/// The vertex callback is invoked between the begin and end
|
||
/// callbacks. It is similar to Gl.glVertex*, and it defines the
|
||
/// vertices of the triangles created by the tessellation process.
|
||
/// The function takes a pointer as its only argument. This pointer
|
||
/// is identical to the opaque pointer provided by the user when the
|
||
/// vertex was described (see <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />). The
|
||
/// delegate prototype for this callback is
|
||
/// <see cref="TessVertexCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_VERTEX_DATA" /></term>
|
||
/// <description>
|
||
/// The same as the <see cref="GLU_TESS_VERTEX" /> callback except
|
||
/// that it takes an additional pointer argument. This pointer is
|
||
/// identical to the opaque pointer provided when
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was called. The delegate
|
||
/// prototype for this callback is
|
||
/// <see cref="TessVertexDataCallback" />.
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="func">
|
||
/// The function to be called.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessCallback</b> is used to indicate a callback to be used by a
|
||
/// tessellation object. If the specified callback is already defined, then it
|
||
/// is replaced. If <i>func</i> is <c>null</c>, then the existing callback
|
||
/// becomes undefined.
|
||
/// </para>
|
||
/// <para>
|
||
/// These callbacks are used by the tessellation object to describe how a polygon
|
||
/// specified by the user is broken into triangles. Note that there are two
|
||
/// versions of each callback: one with user-specified polygon data and one
|
||
/// without. If both versions of a particular callback are specified, then the
|
||
/// callback with user-specified polygon data will be used. Note that the
|
||
/// <i>polygonData</i> parameter used by some of the functions is a copy of the
|
||
/// pointer that was specified when <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> was
|
||
/// called.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// You can directly render tessallated polygons as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_BEGIN, new Glu.TessBeginCallback(Gl.glBegin));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_VERTEX, new Glu.TessVertexCallback(Gl.glVertex3dv));
|
||
/// Glu.gluTessCallback(tess, Glu.GLU_TESS_END, new Glu.TessEndCallback(Gl.glEnd));
|
||
///
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v, v);
|
||
/// . . .
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="TessBeginCallback" />
|
||
/// <seealso cref="TessBeginDataCallback" />
|
||
/// <seealso cref="TessCombineCallback" />
|
||
/// <seealso cref="TessCombineDataCallback" />
|
||
/// <seealso cref="TessEdgeFlagCallback" />
|
||
/// <seealso cref="TessEdgeFlagDataCallback" />
|
||
/// <seealso cref="TessEndCallback" />
|
||
/// <seealso cref="TessEndDataCallback" />
|
||
/// <seealso cref="TessErrorCallback" />
|
||
/// <seealso cref="TessErrorDataCallback" />
|
||
/// <seealso cref="TessVertexCallback" />
|
||
/// <seealso cref="TessVertexDataCallback" />
|
||
/// <seealso cref="Gl.glBegin" />
|
||
/// <seealso cref="Gl.glEdgeFlag" />
|
||
/// <seealso cref="gluErrorString" />
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessCallback(GLUtesselator *tess, GLenum which, void (CALLBACK *fn)());
|
||
public static void gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexDataCallback func)
|
||
{
|
||
tessVertexDataCallback = func;
|
||
__gluTessCallback(tess, which, tessVertexDataCallback);
|
||
}
|
||
#endregion gluTessCallback([In] GLUtesselator tess, int which, [In] TessVertexDataCallback func)
|
||
|
||
#region gluTessEndContour([In] GLUtesselator tess)
|
||
/// <summary>
|
||
/// Delimits a contour description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <see cref="gluTessBeginContour" /> and <b>gluTessEndContour</b> delimit the
|
||
/// definition of a polygon contour. Within each
|
||
/// <see cref="gluTessBeginContour" />/<b>gluTessEndContour</b> pair, there can
|
||
/// be zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />. The vertices specify
|
||
/// a closed contour (the last vertex of each contour is automatically linked to
|
||
/// the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" /> reference page for more
|
||
/// details. <see cref="gluTessBeginContour" /> can only be called between
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> and <see cref="gluTessEndPolygon" />.
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessEndContour(GLUtesselator *tess);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessEndContour([In] GLUtesselator tess);
|
||
#endregion gluTessEndContour([In] GLUtesselator tess)
|
||
|
||
#region gluTessEndPolygon([In] GLUtesselator tess)
|
||
/// <summary>
|
||
/// Delimits a polygon description.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" /> and <b>gluTessEndPolygon</b> delimit the
|
||
/// definition of a convex, concave or self-intersecting polygon. Within each
|
||
/// <see cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />/<b>gluTessEndPolygon</b> pair, there must
|
||
/// be one or more calls to
|
||
/// <see cref="gluTessBeginContour" />/<see cref="gluTessEndContour" />. Within
|
||
/// each contour, there are zero or more calls to <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />.
|
||
/// The vertices specify a closed contour (the last vertex of each contour is
|
||
/// automatically linked to the first). See the <see cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />,
|
||
/// <see cref="gluTessBeginContour" />, and <see cref="gluTessEndContour" />
|
||
/// reference pages for more details.
|
||
/// </para>
|
||
/// <para>
|
||
/// Once <b>gluTessEndPolygon</b> is called, the polygon is tessellated,
|
||
/// and the resulting triangles are described through callbacks. See
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> for descriptions of the callback functions.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tobj, null);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v1, v1);
|
||
/// Glu.gluTessVertex(tobj, v2, v2);
|
||
/// Glu.gluTessVertex(tobj, v3, v3);
|
||
/// Glu.gluTessVertex(tobj, v4, v4);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessBeginContour(tobj);
|
||
/// Glu.gluTessVertex(tobj, v5, v5);
|
||
/// Glu.gluTessVertex(tobj, v6, v6);
|
||
/// Glu.gluTessVertex(tobj, v7, v7);
|
||
/// Glu.gluTessEndContour(tobj);
|
||
/// Glu.gluTessEndPolygon(tobj);
|
||
/// </code>
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
/// <seealso cref="gluTessVertex(Tao.OpenGl.Glu.GLUtesselator, double[], byte[])" />
|
||
// void APIENTRY gluTessEndPolygon(GLUtesselator *tess);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessEndPolygon([In] GLUtesselator tess);
|
||
#endregion gluTessEndPolygon([In] GLUtesselator tess)
|
||
|
||
#region gluTessNormal([In] GLUtesselator tess, double x, double y, double z)
|
||
/// <summary>
|
||
/// Specifies a normal for a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="x">
|
||
/// The x-coordinate component of a normal.
|
||
/// </param>
|
||
/// <param name="y">
|
||
/// The y-coordinate component of a normal.
|
||
/// </param>
|
||
/// <param name="z">
|
||
/// The z-coordinate component of a normal.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessNormal</b> describes a normal for a polygon that the program is
|
||
/// defining. All input data will be projected onto a plane perpendicular to one
|
||
/// of the three coordinate axes before tessellation and all output triangles
|
||
/// will be oriented CCW with respect to the normal (CW orientation can be
|
||
/// obtained by reversing the sign of the supplied normal). For example, if you
|
||
/// know that all polygons lie in the x-y plane, call
|
||
/// <c>Glu.gluTessNormal(tess, 0.0, 0.0, 1.0)</c> before rendering any polygons.
|
||
/// </para>
|
||
/// <para>
|
||
/// If the supplied normal is (0.0, 0.0, 0.0) (the initial value), the normal is
|
||
/// determined as follows. The direction of the normal, up to its sign, is found
|
||
/// by fitting a plane to the vertices, without regard to how the vertices are
|
||
/// connected. It is expected that the input data lies approximately in the
|
||
/// plane; otherwise, projection perpendicular to one of the three coordinate
|
||
/// axes may substantially change the geometry. The sign of the normal is chosen
|
||
/// so that the sum of the signed areas of all input contours is nonnegative
|
||
/// (where a CCW contour has positive area).
|
||
/// </para>
|
||
/// <para>
|
||
/// The supplied normal persists until it is changed by another call to
|
||
/// <b>gluTessNormal</b>.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
// void APIENTRY gluTessNormal(GLUtesselator *tess, GLdouble x, GLdouble y, GLdouble z);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessNormal([In] GLUtesselator tess, double x, double y, double z);
|
||
#endregion gluTessNormal([In] GLUtesselator tess, double x, double y, double z)
|
||
|
||
#region gluTessProperty([In] GLUtesselator tess, int which, double data)
|
||
/// <summary>
|
||
/// Sets the property of a tessellation object.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="which">
|
||
/// <para>
|
||
/// The property value to set. The following values are valid:
|
||
/// </para>
|
||
/// <para>
|
||
/// <list type="table">
|
||
/// <listheader>
|
||
/// <term>Value</term>
|
||
/// <description>Description</description>
|
||
/// </listheader>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_WINDING_RULE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// Determines which parts of the polygon are on the "interior".
|
||
/// <i>data</i> may be set to one of
|
||
/// <see cref="GLU_TESS_WINDING_ODD" />,
|
||
/// <see cref="GLU_TESS_WINDING_NONZERO" />,
|
||
/// <see cref="GLU_TESS_WINDING_POSITIVE" />, or
|
||
/// <see cref="GLU_TESS_WINDING_NEGATIVE" />, or
|
||
/// <see cref="GLU_TESS_WINDING_ABS_GEQ_TWO" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// To understand how the winding rule works, consider that the
|
||
/// input contours partition the plane into regions. The winding
|
||
/// rule determines which of these regions are inside the
|
||
/// polygon.
|
||
/// </para>
|
||
/// <para>
|
||
/// For a single contour C, the winding number of a point x is
|
||
/// simply the signed number of revolutions we make around x as
|
||
/// we travel once around C (where CCW is positive). When there
|
||
/// are several contours, the individual winding numbers are
|
||
/// summed. This procedure associates a signed integer value
|
||
/// with each point x in the plane. Note that the winding number
|
||
/// is the same for all points in a single region.
|
||
/// </para>
|
||
/// <para>
|
||
/// The winding rule classifies a region as "inside" if its
|
||
/// winding number belongs to the chosen category (odd, nonzero,
|
||
/// positive, negative, or absolute value of at least two). The
|
||
/// previous GLU tessellator (prior to GLU 1.2) used the "odd"
|
||
/// rule. The "nonzero" rule is another common way to define the
|
||
/// interior. The other three rules are useful for polygon CSG
|
||
/// operations.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_BOUNDARY_ONLY" /></term>
|
||
/// <description>
|
||
/// Is a boolean value ("value" should be set to
|
||
/// <see cref="Gl.GL_TRUE" /> or <see cref="Gl.GL_FALSE" />). When
|
||
/// set to <see cref="Gl.GL_TRUE" />, a set of closed contours
|
||
/// separating the polygon interior and exterior are returned instead
|
||
/// of a tessellation. Exterior contours are oriented CCW with
|
||
/// respect to the normal; interior contours are oriented CW. The
|
||
/// <see cref="GLU_TESS_BEGIN" /> and
|
||
/// <see cref="GLU_TESS_BEGIN_DATA" /> callbacks use the type
|
||
/// <see cref="Gl.GL_LINE_LOOP" /> for each contour.
|
||
/// </description>
|
||
/// </item>
|
||
/// <item>
|
||
/// <term><see cref="GLU_TESS_TOLERANCE" /></term>
|
||
/// <description>
|
||
/// <para>
|
||
/// Specifies a tolerance for merging features to reduce the size
|
||
/// of the output. For example, two vertices that are very close
|
||
/// to each other might be replaced by a single vertex. The
|
||
/// tolerance is multiplied by the largest coordinate magnitude
|
||
/// of any input vertex; this specifies the maximum distance that
|
||
/// any feature can move as the result of a single merge
|
||
/// operation. If a single feature takes part in several merge
|
||
/// operations, the total distance moved could be larger.
|
||
/// </para>
|
||
/// <para>
|
||
/// Feature merging is completely optional; the tolerance is only
|
||
/// a hint. The implementation is free to merge in some cases
|
||
/// and not in others, or to never merge features at all. The
|
||
/// initial tolerance is 0.
|
||
/// </para>
|
||
/// <para>
|
||
/// The current implementation merges vertices only if they are
|
||
/// exactly coincident, regardless of the current tolerance. A
|
||
/// vertex is spliced into an edge only if the implementation is
|
||
/// unable to distinguish which side of the edge the vertex lies
|
||
/// on. Two edges are merged only when both endpoints are
|
||
/// identical.
|
||
/// </para>
|
||
/// </description>
|
||
/// </item>
|
||
/// </list>
|
||
/// </para>
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// The value of the indicated property.
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <b>gluTessProperty</b> is used to control properties stored in a tessellation
|
||
/// object. These properties affect the way that the polygons are interpreted
|
||
/// and rendered.
|
||
/// </remarks>
|
||
/// <seealso cref="gluGetTessProperty(Tao.OpenGl.Glu.GLUtesselator, int, double[])" />
|
||
/// <seealso cref="gluNewTess" />
|
||
// void APIENTRY gluTessProperty(GLUtesselator *tess, GLenum which, GLdouble value);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessProperty([In] GLUtesselator tess, int which, double data);
|
||
#endregion gluTessProperty([In] GLUtesselator tess, int which, double data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[ , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[ , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[ , , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[, ,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] byte[ , , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[ , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[ , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[ , , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[, ,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] double[ , , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[ , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[ , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[ , , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[, ,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] short[ , , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[ , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[ , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[ , , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[, ,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] int[ , , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[ , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[ , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[ , , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[, ,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] float[ , , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[ , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[ , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[ , , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[, ,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] ushort[ , , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[ , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[ , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[ , , ] data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[, ,] data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] uint[ , , ] data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] IntPtr data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] IntPtr data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] IntPtr data)
|
||
|
||
#region gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] void *data)
|
||
/// <summary>
|
||
/// Specifies a vertex on a polygon.
|
||
/// </summary>
|
||
/// <param name="tess">
|
||
/// The tessellation object (created with <see cref="gluNewTess" />).
|
||
/// </param>
|
||
/// <param name="location">
|
||
/// The location of the vertex.
|
||
/// </param>
|
||
/// <param name="data">
|
||
/// A pointer passed back to the program with the vertex callback (as specified
|
||
/// by <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />).
|
||
/// </param>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluTessVertex</b> describes a vertex on a polygon that the program
|
||
/// defines. Successive <b>gluTessVertex</b> calls describe a closed contour.
|
||
/// For example, to describe a quadrilateral <b>gluTessVertex</b> should be
|
||
/// called four times. <b>gluTessVertex</b> can only be called between
|
||
/// <see cref="gluTessBeginContour" /> and <see cref="gluTessEndContour" />.
|
||
/// </para>
|
||
/// <para>
|
||
/// <i>data</i> normally points to a structure containing the vertex location,
|
||
/// as well as other per-vertex attributes such as color and normal. This
|
||
/// pointer is passed back to the user through the <see cref="GLU_TESS_VERTEX" />
|
||
/// or <see cref="GLU_TESS_VERTEX_DATA" /> callback after tessellation (see the
|
||
/// <see cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" /> reference page).
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>EXAMPLE</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// The following describes a quadrilateral with a triangular hole:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// Glu.gluTessBeginPolygon(tess, null);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v1, v1);
|
||
/// Glu.gluTessVertex(tess, v2, v2);
|
||
/// Glu.gluTessVertex(tess, v3, v3);
|
||
/// Glu.gluTessVertex(tess, v4, v4);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluNextContour(tess, Glu.GLU_INTERIOR);
|
||
/// Glu.gluTessBeginContour(tess);
|
||
/// Glu.gluTessVertex(tess, v5, v5);
|
||
/// Glu.gluTessVertex(tess, v6, v6);
|
||
/// Glu.gluTessVertex(tess, v7, v7);
|
||
/// Glu.gluTessEndContour(tess);
|
||
/// Glu.gluTessEndPolygon(tess);
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>NOTES</b>
|
||
/// </para>
|
||
/// <para>
|
||
/// It is a common error to use a local variable for <i>location</i> or
|
||
/// <i>data</i> and store values into it as part of a loop. For example:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// for(int i = 0; i < NVERTICES; ++i) {
|
||
/// double data[3];
|
||
/// data[0] = vertex[i, 0];
|
||
/// data[1] = vertex[i, 1];
|
||
/// data[2] = vertex[i, 2];
|
||
/// Glu.gluTessVertex(tobj, data, data);
|
||
/// }
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// This doesn't work. Because the pointers specified by <i>location</i> and
|
||
/// <i>data</i> might not be dereferenced until <see cref="gluTessEndPolygon" />
|
||
/// is executed, all the vertex coordinates but the very last set could be
|
||
/// overwritten before tessellation begins.
|
||
/// </para>
|
||
/// <para>
|
||
/// Two common symptoms of this problem are consists of a single point (when a
|
||
/// local variable is used for <i>data</i>) and a
|
||
/// <see cref="GLU_TESS_NEED_COMBINE_CALLBACK" /> error (when a local variable
|
||
/// is used for <i>location</i>).
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="gluNewTess" />
|
||
/// <seealso cref="gluTessBeginPolygon(Tao.OpenGl.Glu.GLUtesselator, byte[])" />
|
||
/// <seealso cref="gluTessBeginContour" />
|
||
/// <seealso cref="gluTessCallback(Tao.OpenGl.Glu.GLUtesselator, int, Tao.OpenGl.Glu.TessBeginCallback)" />
|
||
/// <seealso cref="gluTessEndPolygon" />
|
||
/// <seealso cref="gluTessNormal" />
|
||
/// <seealso cref="gluTessProperty" />
|
||
// void APIENTRY gluTessVertex(GLUtesselator *tess, GLdouble coords[3], void *data);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), CLSCompliant(false), SuppressUnmanagedCodeSecurity]
|
||
public unsafe static extern void gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] void* data);
|
||
#endregion gluTessVertex([In] GLUtesselator tess, [In] double[] location, [In] void *data)
|
||
|
||
#region int gluUnProject(double winX, double winY, double winZ, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, out double objX, out double objY, out double objZ)
|
||
/// <summary>
|
||
/// Maps window coordinates to object coordinates.
|
||
/// </summary>
|
||
/// <param name="winX">
|
||
/// The window's x axis coordinate to be mapped.
|
||
/// </param>
|
||
/// <param name="winY">
|
||
/// The window's y axis coordinate to be mapped.
|
||
/// </param>
|
||
/// <param name="winZ">
|
||
/// The window's z axis coordinate to be mapped.
|
||
/// </param>
|
||
/// <param name="modelMatrix">
|
||
/// The modelview matrix (as from a <see cref="Gl.glGetDoublev(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="projectionMatrix">
|
||
/// The projection matrix (as from a <see cref="Gl.glGetDoublev(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="viewport">
|
||
/// The viewport (as from a <see cref="Gl.glGetIntegerv(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="objX">
|
||
/// The computed object's x axis coordinate.
|
||
/// </param>
|
||
/// <param name="objY">
|
||
/// The computed object's y axis coordinate.
|
||
/// </param>
|
||
/// <param name="objZ">
|
||
/// The computed object's z axis coordinate.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of <see cref="Gl.GL_TRUE" /> indicates success; a return value
|
||
/// of <see cref="Gl.GL_FALSE" /> indicates failure.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluUnProject</b> maps the specified window coordinates into object
|
||
/// coordinates using <i>modelMatrix</i>, <i>projectionMatrix</i>, and
|
||
/// <i>viewport</i>. The result is stored in <i>objX</i>, <i>objY</i>, and
|
||
/// <i>objZ</i>. A return value of <see cref="Gl.GL_TRUE" /> indicates success;
|
||
/// a return value of <see cref="Gl.GL_FALSE" /> indicates failure.
|
||
/// </para>
|
||
/// <para>
|
||
/// To compute the coordinates (<i>objX</i>, <i>objY</i>, and <i>objZ</i>),
|
||
/// <b>gluUnProject</b> multiplies the normalized device coordinates by the
|
||
/// inverse of <i>modelMatrix</i> multiplied by <i>projectionMatrix</i> as
|
||
/// follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// ( 2(winX - viewport[0]) )
|
||
/// | ----------------- - 1 |
|
||
/// | viewport[2] |
|
||
/// ( ) | |
|
||
/// | objX | | 2(winY - viewport[1]) |
|
||
/// | objY | = INV(PM)| ----------------- - 1 |
|
||
/// | objZ | | viewport[3] |
|
||
/// ( W ) | |
|
||
/// | 2(winZ) - 1 |
|
||
/// | |
|
||
/// ( 1 )
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// INV() denotes matrix inversion. W is an unused variable, included for
|
||
/// consistent matrix notation.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glGetDoublev(int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetIntegerv(int, IntPtr)" />
|
||
/// <seealso cref="gluProject" />
|
||
// int APIENTRY gluUnProject(GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble *objx, GLdouble *objy, GLdouble *objz);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluUnProject(double winX, double winY, double winZ, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, out double objX, out double objY, out double objZ);
|
||
#endregion int gluUnProject(double winX, double winY, double winZ, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, out double objX, out double objY, out double objZ)
|
||
|
||
#region int gluUnProject4(double winX, double winY, double winZ, double clipW, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, double nearVal, double farVal, out double objX, out double objY, out double objZ, out double objW)
|
||
/// <summary>
|
||
/// Maps window and clip coordinates to object coordinates.
|
||
/// </summary>
|
||
/// <param name="winX">
|
||
/// The window's x axis coordinate to be mapped.
|
||
/// </param>
|
||
/// <param name="winY">
|
||
/// The window's y axis coordinate to be mapped.
|
||
/// </param>
|
||
/// <param name="winZ">
|
||
/// The window's z axis coordinate to be mapped.
|
||
/// </param>
|
||
/// <param name="clipW">
|
||
/// The clip w coordinate to be mapped.
|
||
/// </param>
|
||
/// <param name="modelMatrix">
|
||
/// The modelview matrix (as from a <see cref="Gl.glGetDoublev(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="projectionMatrix">
|
||
/// The projection matrix (as from a <see cref="Gl.glGetDoublev(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="viewport">
|
||
/// The viewport (as from a <see cref="Gl.glGetIntegerv(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="nearVal">
|
||
/// The near plane (as from a <see cref="Gl.glGetDoublev(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="farVal">
|
||
/// The far plane (as from a <see cref="Gl.glGetDoublev(int, IntPtr)" /> call).
|
||
/// </param>
|
||
/// <param name="objX">
|
||
/// The computed object's x axis coordinate.
|
||
/// </param>
|
||
/// <param name="objY">
|
||
/// The computed object's y axis coordinate.
|
||
/// </param>
|
||
/// <param name="objZ">
|
||
/// The computed object's z axis coordinate.
|
||
/// </param>
|
||
/// <param name="objW">
|
||
/// The computed object's clip w coordinate.
|
||
/// </param>
|
||
/// <returns>
|
||
/// A return value of <see cref="Gl.GL_TRUE" /> indicates success; a return
|
||
/// value of <see cref="Gl.GL_FALSE" /> indicates failure.
|
||
/// </returns>
|
||
/// <remarks>
|
||
/// <para>
|
||
/// <b>gluUnProject4</b> maps the specified window coordinates <i>winX</i>,
|
||
/// <i>winY</i> and <i>winZ</i> and its clip w coordinate <i>clipW</i> into
|
||
/// object coordinates (<i>objX</i>, <i>objY</i>, <i>objZ</i>, <i>objW</i>)
|
||
/// using <i>modelMatrix</i>, <i>projectionMatrix</i> and <i>viewport</i>.
|
||
/// <i>clipW</i> can be other than 1 as for vertices in
|
||
/// <see cref="Gl.glFeedbackBuffer(int, int, IntPtr)" /> when data type
|
||
/// <see cref="Gl.GL_4D_COLOR_TEXTURE" /> is returned. This also handles the
|
||
/// case where the <i>nearVal</i> and <i>farVal</i> planes are different from the
|
||
/// default, 0 and 1, respectively. A return value of <see cref="Gl.GL_TRUE" />
|
||
/// indicates success; a return value of <see cref="Gl.GL_FALSE" /> indicates
|
||
/// failure.
|
||
/// </para>
|
||
/// <para>
|
||
/// To compute the coordinates (<i>objX</i>, <i>objY</i>, <i>objZ</i> and
|
||
/// <i>objW</i>), <b>gluUnProject4</b> multiplies the normalized device
|
||
/// coordinates by the inverse of <i>modelMatrix</i> multiplied by
|
||
/// <i>projectionMatrix</i> as follows:
|
||
/// </para>
|
||
/// <para>
|
||
/// <code>
|
||
/// ( 2(winX - viewport[0] )
|
||
/// | ---------------- - 1 |
|
||
/// | viewport[2] |
|
||
/// | |
|
||
/// | 2(winY - viewport[1] |
|
||
/// ( objX ) | ---------------- - 1 |
|
||
/// | objY | = INV(PM) * | viewport[3] |
|
||
/// | objZ | | |
|
||
/// ( objW ) | 2(winZ - nearVal) |
|
||
/// | -------------- - 1 |
|
||
/// | farVal - nearVal |
|
||
/// | |
|
||
/// ( clipW )
|
||
/// </code>
|
||
/// </para>
|
||
/// <para>
|
||
/// INV() denotes matrix inversion.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluUnProject4</b> is equivalent to <see cref="gluUnProject" /> when
|
||
/// <i>clipW</i> is 1, <i>nearVal</i> is 0 and <i>farVal</i> is 1.
|
||
/// </para>
|
||
/// <para>
|
||
/// <b>gluUnProject4</b> is available only if the GLU version is 1.3 or greater.
|
||
/// </para>
|
||
/// </remarks>
|
||
/// <seealso cref="Gl.glFeedbackBuffer(int, int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetDoublev(int, IntPtr)" />
|
||
/// <seealso cref="Gl.glGetIntegerv(int, IntPtr)" />
|
||
/// <seealso cref="gluProject" />
|
||
/// <seealso cref="gluUnProject" />
|
||
// GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
|
||
[DllImport("glu32.dll", CallingConvention = CALLING_CONVENTION), SuppressUnmanagedCodeSecurity]
|
||
public static extern int gluUnProject4(double winX, double winY, double winZ, double clipW, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, double nearVal, double farVal, out double objX, out double objY, out double objZ, out double objW);
|
||
#endregion int gluUnProject4(double winX, double winY, double winZ, double clipW, [In] double[] modelMatrix, [In] double[] projectionMatrix, [In] int[] viewport, double nearVal, double farVal, out double objX, out double objY, out double objZ, out double objW)
|
||
}
|
||
} |