1553 lines
62 KiB
C#
1553 lines
62 KiB
C#
// MonoGame - Copyright (C) The MonoGame Team
|
|
// This file is subject to the terms and conditions defined in
|
|
// file 'LICENSE.txt', which is part of this source code package.
|
|
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using MonoGame.Utilities;
|
|
|
|
#if __IOS__ || __TVOS__ || MONOMAC
|
|
using ObjCRuntime;
|
|
#endif
|
|
|
|
namespace MonoGame.OpenGL
|
|
{
|
|
internal enum BufferAccess
|
|
{
|
|
ReadOnly = 0x88B8,
|
|
}
|
|
|
|
internal enum BufferUsageHint
|
|
{
|
|
StreamDraw = 0x88E0,
|
|
StaticDraw = 0x88E4,
|
|
}
|
|
|
|
internal enum StencilFace
|
|
{
|
|
Front = 0x0404,
|
|
Back = 0x0405,
|
|
}
|
|
internal enum DrawBuffersEnum
|
|
{
|
|
UnsignedShort,
|
|
UnsignedInt,
|
|
}
|
|
|
|
internal enum ShaderType
|
|
{
|
|
VertexShader = 0x8B31,
|
|
FragmentShader = 0x8B30,
|
|
}
|
|
|
|
internal enum ShaderParameter
|
|
{
|
|
LogLength = 0x8B84,
|
|
CompileStatus = 0x8B81,
|
|
SourceLength = 0x8B88,
|
|
}
|
|
|
|
internal enum GetProgramParameterName
|
|
{
|
|
LogLength = 0x8B84,
|
|
LinkStatus = 0x8B82,
|
|
}
|
|
|
|
internal enum DrawElementsType
|
|
{
|
|
UnsignedShort = 0x1403,
|
|
UnsignedInt = 0x1405,
|
|
}
|
|
|
|
internal enum QueryTarget
|
|
{
|
|
SamplesPassed = 0x8914,
|
|
SamplesPassedExt = 0x8C2F,
|
|
}
|
|
|
|
internal enum GetQueryObjectParam
|
|
{
|
|
QueryResultAvailable = 0x8867,
|
|
QueryResult = 0x8866,
|
|
}
|
|
|
|
internal enum GenerateMipmapTarget
|
|
{
|
|
Texture1D = 0x0DE0,
|
|
Texture2D = 0x0DE1,
|
|
Texture3D = 0x806F,
|
|
TextureCubeMap = 0x8513,
|
|
Texture1DArray = 0x8C18,
|
|
Texture2DArray = 0x8C1A,
|
|
Texture2DMultisample = 0x9100,
|
|
Texture2DMultisampleArray = 0x9102,
|
|
}
|
|
|
|
internal enum BlitFramebufferFilter
|
|
{
|
|
Nearest = 0x2600,
|
|
}
|
|
|
|
internal enum ReadBufferMode
|
|
{
|
|
ColorAttachment0 = 0x8CE0,
|
|
}
|
|
|
|
internal enum DrawBufferMode
|
|
{
|
|
ColorAttachment0 = 0x8CE0,
|
|
}
|
|
|
|
internal enum FramebufferErrorCode
|
|
{
|
|
FramebufferUndefined = 0x8219,
|
|
FramebufferComplete = 0x8CD5,
|
|
FramebufferCompleteExt = 0x8CD5,
|
|
FramebufferIncompleteAttachment = 0x8CD6,
|
|
FramebufferIncompleteAttachmentExt = 0x8CD6,
|
|
FramebufferIncompleteMissingAttachment = 0x8CD7,
|
|
FramebufferIncompleteMissingAttachmentExt = 0x8CD7,
|
|
FramebufferIncompleteDimensionsExt = 0x8CD9,
|
|
FramebufferIncompleteFormatsExt = 0x8CDA,
|
|
FramebufferIncompleteDrawBuffer = 0x8CDB,
|
|
FramebufferIncompleteDrawBufferExt = 0x8CDB,
|
|
FramebufferIncompleteReadBuffer = 0x8CDC,
|
|
FramebufferIncompleteReadBufferExt = 0x8CDC,
|
|
FramebufferUnsupported = 0x8CDD,
|
|
FramebufferUnsupportedExt = 0x8CDD,
|
|
FramebufferIncompleteMultisample = 0x8D56,
|
|
FramebufferIncompleteLayerTargets = 0x8DA8,
|
|
FramebufferIncompleteLayerCount = 0x8DA9,
|
|
}
|
|
|
|
internal enum BufferTarget
|
|
{
|
|
ArrayBuffer = 0x8892,
|
|
ElementArrayBuffer = 0x8893,
|
|
}
|
|
|
|
internal enum RenderbufferTarget
|
|
{
|
|
Renderbuffer = 0x8D41,
|
|
RenderbufferExt = 0x8D41,
|
|
}
|
|
|
|
internal enum FramebufferTarget
|
|
{
|
|
Framebuffer = 0x8D40,
|
|
FramebufferExt = 0x8D40,
|
|
ReadFramebuffer = 0x8CA8,
|
|
}
|
|
|
|
internal enum RenderbufferStorage
|
|
{
|
|
Rgba8 = 0x8058,
|
|
DepthComponent16 = 0x81a5,
|
|
DepthComponent24 = 0x81a6,
|
|
Depth24Stencil8 = 0x88F0,
|
|
// GLES Values
|
|
DepthComponent24Oes = 0x81A6,
|
|
Depth24Stencil8Oes = 0x88F0,
|
|
StencilIndex8 = 0x8D48,
|
|
}
|
|
|
|
internal enum EnableCap : int
|
|
{
|
|
PointSmooth = 0x0B10,
|
|
LineSmooth = 0x0B20,
|
|
CullFace = 0x0B44,
|
|
Lighting = 0x0B50,
|
|
ColorMaterial = 0x0B57,
|
|
Fog = 0x0B60,
|
|
DepthTest = 0x0B71,
|
|
StencilTest = 0x0B90,
|
|
Normalize = 0x0BA1,
|
|
AlphaTest = 0x0BC0,
|
|
Dither = 0x0BD0,
|
|
Blend = 0x0BE2,
|
|
ColorLogicOp = 0x0BF2,
|
|
ScissorTest = 0x0C11,
|
|
Texture2D = 0x0DE1,
|
|
PolygonOffsetFill = 0x8037,
|
|
RescaleNormal = 0x803A,
|
|
VertexArray = 0x8074,
|
|
NormalArray = 0x8075,
|
|
ColorArray = 0x8076,
|
|
TextureCoordArray = 0x8078,
|
|
Multisample = 0x809D,
|
|
SampleAlphaToCoverage = 0x809E,
|
|
SampleAlphaToOne = 0x809F,
|
|
SampleCoverage = 0x80A0,
|
|
DebugOutputSynchronous = 0x8242,
|
|
DebugOutput = 0x92E0,
|
|
}
|
|
|
|
internal enum VertexPointerType
|
|
{
|
|
Float = 0x1406,
|
|
Short = 0x1402,
|
|
}
|
|
|
|
internal enum VertexAttribPointerType
|
|
{
|
|
Float = 0x1406,
|
|
Short = 0x1402,
|
|
UnsignedByte = 0x1401,
|
|
HalfFloat = 0x140B,
|
|
}
|
|
|
|
internal enum CullFaceMode
|
|
{
|
|
Back = 0x0405,
|
|
Front = 0x0404,
|
|
}
|
|
|
|
internal enum FrontFaceDirection
|
|
{
|
|
Cw = 0x0900,
|
|
Ccw = 0x0901,
|
|
}
|
|
|
|
internal enum MaterialFace
|
|
{
|
|
FrontAndBack = 0x0408,
|
|
}
|
|
|
|
internal enum PolygonMode
|
|
{
|
|
Fill = 0x1B02,
|
|
Line = 0x1B01,
|
|
}
|
|
|
|
internal enum ColorPointerType
|
|
{
|
|
Float = 0x1406,
|
|
Short = 0x1402,
|
|
UnsignedShort = 0x1403,
|
|
UnsignedByte = 0x1401,
|
|
HalfFloat = 0x140B,
|
|
}
|
|
|
|
internal enum NormalPointerType
|
|
{
|
|
Byte = 0x1400,
|
|
Float = 0x1406,
|
|
Short = 0x1402,
|
|
UnsignedShort = 0x1403,
|
|
UnsignedByte = 0x1401,
|
|
HalfFloat = 0x140B,
|
|
}
|
|
|
|
internal enum TexCoordPointerType
|
|
{
|
|
Byte = 0x1400,
|
|
Float = 0x1406,
|
|
Short = 0x1402,
|
|
UnsignedShort = 0x1403,
|
|
UnsignedByte = 0x1401,
|
|
HalfFloat = 0x140B,
|
|
}
|
|
|
|
internal enum BlendEquationMode
|
|
{
|
|
FuncAdd = 0x8006,
|
|
Max = 0x8008, // ios MaxExt
|
|
Min = 0x8007, // ios MinExt
|
|
FuncReverseSubtract = 0x800B,
|
|
FuncSubtract = 0x800A,
|
|
}
|
|
|
|
internal enum BlendingFactorSrc
|
|
{
|
|
Zero = 0,
|
|
SrcColor = 0x0300,
|
|
OneMinusSrcColor = 0x0301,
|
|
SrcAlpha = 0x0302,
|
|
OneMinusSrcAlpha = 0x0303,
|
|
DstAlpha = 0x0304,
|
|
OneMinusDstAlpha = 0x0305,
|
|
DstColor = 0x0306,
|
|
OneMinusDstColor = 0x0307,
|
|
SrcAlphaSaturate = 0x0308,
|
|
ConstantColor = 0x8001,
|
|
OneMinusConstantColor = 0x8002,
|
|
ConstantAlpha = 0x8003,
|
|
OneMinusConstantAlpha = 0x8004,
|
|
One = 1,
|
|
}
|
|
|
|
internal enum BlendingFactorDest
|
|
{
|
|
Zero = 0,
|
|
SrcColor = 0x0300,
|
|
OneMinusSrcColor = 0x0301,
|
|
SrcAlpha = 0x0302,
|
|
OneMinusSrcAlpha = 0x0303,
|
|
DstAlpha = 0x0304,
|
|
OneMinusDstAlpha = 0x0305,
|
|
DstColor = 0X0306,
|
|
OneMinusDstColor = 0x0307,
|
|
SrcAlphaSaturate = 0x0308,
|
|
ConstantColor = 0x8001,
|
|
OneMinusConstantColor = 0x8002,
|
|
ConstantAlpha = 0x8003,
|
|
OneMinusConstantAlpha = 0x8004,
|
|
One = 1,
|
|
}
|
|
|
|
internal enum DepthFunction
|
|
{
|
|
Always = 0x0207,
|
|
Equal = 0x0202,
|
|
Greater = 0x0204,
|
|
Gequal = 0x0206,
|
|
Less = 0x0201,
|
|
Lequal = 0x0203,
|
|
Never = 0x0200,
|
|
Notequal = 0x0205,
|
|
}
|
|
|
|
internal enum GetPName : int
|
|
{
|
|
ArrayBufferBinding = 0x8894,
|
|
MaxTextureImageUnits = 0x8872,
|
|
MaxVertexAttribs = 0x8869,
|
|
MaxTextureSize = 0x0D33,
|
|
MaxDrawBuffers = 0x8824,
|
|
TextureBinding2D = 0x8069,
|
|
MaxTextureMaxAnisotropyExt = 0x84FF,
|
|
MaxSamples = 0x8D57,
|
|
}
|
|
|
|
internal enum StringName
|
|
{
|
|
Extensions = 0x1F03,
|
|
Version = 0x1F02,
|
|
}
|
|
|
|
internal enum FramebufferAttachment
|
|
{
|
|
ColorAttachment0 = 0x8CE0,
|
|
ColorAttachment0Ext = 0x8CE0,
|
|
DepthAttachment = 0x8D00,
|
|
StencilAttachment = 0x8D20,
|
|
ColorAttachmentExt = 0x1800,
|
|
DepthAttachementExt = 0x1801,
|
|
StencilAttachmentExt = 0x1802,
|
|
}
|
|
|
|
internal enum GLPrimitiveType
|
|
{
|
|
Lines = 0x0001,
|
|
LineStrip = 0x0003,
|
|
Triangles = 0x0004,
|
|
TriangleStrip = 0x0005,
|
|
}
|
|
|
|
[Flags]
|
|
internal enum ClearBufferMask
|
|
{
|
|
DepthBufferBit = 0x00000100,
|
|
StencilBufferBit = 0x00000400,
|
|
ColorBufferBit = 0x00004000,
|
|
}
|
|
|
|
internal enum ErrorCode
|
|
{
|
|
NoError = 0,
|
|
}
|
|
|
|
internal enum TextureUnit
|
|
{
|
|
Texture0 = 0x84C0,
|
|
}
|
|
|
|
internal enum TextureTarget
|
|
{
|
|
Texture2D = 0x0DE1,
|
|
Texture3D = 0x806F,
|
|
TextureCubeMap = 0x8513,
|
|
TextureCubeMapPositiveX = 0x8515,
|
|
TextureCubeMapPositiveY = 0x8517,
|
|
TextureCubeMapPositiveZ = 0x8519,
|
|
TextureCubeMapNegativeX = 0x8516,
|
|
TextureCubeMapNegativeY = 0x8518,
|
|
TextureCubeMapNegativeZ = 0x851A,
|
|
}
|
|
|
|
internal enum PixelInternalFormat
|
|
{
|
|
Rgba = 0x1908,
|
|
Rgb = 0x1907,
|
|
Rgba4 = 0x8056,
|
|
Luminance = 0x1909,
|
|
CompressedRgbS3tcDxt1Ext = 0x83F0,
|
|
CompressedSrgbS3tcDxt1Ext = 0x8C4C,
|
|
CompressedRgbaS3tcDxt1Ext = 0x83F1,
|
|
CompressedRgbaS3tcDxt3Ext = 0x83F2,
|
|
CompressedSrgbAlphaS3tcDxt3Ext = 0x8C4E,
|
|
CompressedRgbaS3tcDxt5Ext = 0x83F3,
|
|
CompressedSrgbAlphaS3tcDxt5Ext = 0x8C4F,
|
|
R32f = 0x822E,
|
|
Rg16f = 0x822F,
|
|
Rgba16f = 0x881A,
|
|
R16f = 0x822D,
|
|
Rg32f = 0x8230,
|
|
Rgba32f = 0x8814,
|
|
Rg8i = 0x8237,
|
|
Rgba8i = 0x8D8E,
|
|
Rg16ui = 0x823A,
|
|
Rgba16ui = 0x8D76,
|
|
Rgb10A2ui = 0x906F,
|
|
Rgba16 = 0x805B,
|
|
// PVRTC
|
|
CompressedRgbPvrtc2Bppv1Img = 0x8C01,
|
|
CompressedRgbPvrtc4Bppv1Img = 0x8C00,
|
|
CompressedRgbaPvrtc2Bppv1Img = 0x8C03,
|
|
CompressedRgbaPvrtc4Bppv1Img = 0x8C02,
|
|
// ATITC
|
|
AtcRgbaExplicitAlphaAmd = 0x8C93,
|
|
AtcRgbaInterpolatedAlphaAmd = 0x87EE,
|
|
// ETC1
|
|
Etc1 = 0x8D64,
|
|
Srgb = 0x8C40,
|
|
|
|
}
|
|
|
|
internal enum PixelFormat
|
|
{
|
|
Rgba = 0x1908,
|
|
Rgb = 0x1907,
|
|
Luminance = 0x1909,
|
|
CompressedTextureFormats = 0x86A3,
|
|
Red = 0x1903,
|
|
Rg = 0x8227,
|
|
}
|
|
|
|
internal enum PixelType
|
|
{
|
|
UnsignedByte = 0x1401,
|
|
UnsignedShort565 = 0x8363,
|
|
UnsignedShort4444 = 0x8033,
|
|
UnsignedShort5551 = 0x8034,
|
|
Float = 0x1406,
|
|
HalfFloat = 0x140B,
|
|
HalfFloatOES = 0x8D61,
|
|
Byte = 0x1400,
|
|
UnsignedShort = 0x1403,
|
|
UnsignedInt1010102 = 0x8036,
|
|
}
|
|
|
|
internal enum PixelStoreParameter
|
|
{
|
|
UnpackAlignment = 0x0CF5,
|
|
PackAlignment = 0x0D05,
|
|
}
|
|
|
|
internal enum GLStencilFunction
|
|
{
|
|
Always = 0x0207,
|
|
Equal = 0x0202,
|
|
Greater = 0x0204,
|
|
Gequal = 0x0206,
|
|
Less = 0x0201,
|
|
Lequal = 0x0203,
|
|
Never = 0x0200,
|
|
Notequal = 0x0205,
|
|
}
|
|
|
|
internal enum StencilOp
|
|
{
|
|
Keep = 0x1E00,
|
|
DecrWrap = 0x8508,
|
|
Decr = 0x1E03,
|
|
Incr = 0x1E02,
|
|
IncrWrap = 0x8507,
|
|
Invert = 0x150A,
|
|
Replace = 0x1E01,
|
|
Zero = 0,
|
|
}
|
|
|
|
internal enum TextureParameterName
|
|
{
|
|
TextureMaxAnisotropyExt = 0x84FE,
|
|
TextureBaseLevel = 0x813C,
|
|
TextureMaxLevel = 0x813D,
|
|
TextureMinFilter = 0x2801,
|
|
TextureMagFilter = 0x2800,
|
|
TextureWrapS = 0x2802,
|
|
TextureWrapT = 0x2803,
|
|
TextureBorderColor = 0x1004,
|
|
TextureLodBias = 0x8501,
|
|
TextureCompareMode = 0x884C,
|
|
TextureCompareFunc = 0x884D,
|
|
GenerateMipmap = 0x8191,
|
|
}
|
|
|
|
internal enum Bool
|
|
{
|
|
True = 1,
|
|
False = 0,
|
|
}
|
|
|
|
internal enum TextureMinFilter
|
|
{
|
|
LinearMipmapNearest = 0x2701,
|
|
NearestMipmapLinear = 0x2702,
|
|
LinearMipmapLinear = 0x2703,
|
|
Linear = 0x2601,
|
|
NearestMipmapNearest = 0x2700,
|
|
Nearest = 0x2600,
|
|
}
|
|
|
|
internal enum TextureMagFilter
|
|
{
|
|
Linear = 0x2601,
|
|
Nearest = 0x2600,
|
|
}
|
|
|
|
internal enum TextureCompareMode
|
|
{
|
|
CompareRefToTexture = 0x884E,
|
|
None = 0,
|
|
}
|
|
|
|
internal enum TextureWrapMode
|
|
{
|
|
ClampToEdge = 0x812F,
|
|
Repeat = 0x2901,
|
|
MirroredRepeat = 0x8370,
|
|
//GLES
|
|
ClampToBorder = 0x812D,
|
|
}
|
|
|
|
internal partial class ColorFormat
|
|
{
|
|
internal ColorFormat (int r, int g, int b, int a)
|
|
{
|
|
R = r;
|
|
G = g;
|
|
B = b;
|
|
A = a;
|
|
}
|
|
|
|
internal int R { get; private set; }
|
|
internal int G { get; private set; }
|
|
internal int B { get; private set; }
|
|
internal int A { get; private set; }
|
|
}
|
|
|
|
internal partial class GL
|
|
{
|
|
internal enum RenderApi
|
|
{
|
|
ES = 12448,
|
|
GL = 12450,
|
|
}
|
|
|
|
internal static RenderApi BoundApi = RenderApi.GL;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void EnableVertexAttribArrayDelegate (int attrib);
|
|
internal static EnableVertexAttribArrayDelegate EnableVertexAttribArray;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DisableVertexAttribArrayDelegate (int attrib);
|
|
internal static DisableVertexAttribArrayDelegate DisableVertexAttribArray;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void MakeCurrentDelegate (IntPtr window);
|
|
internal static MakeCurrentDelegate MakeCurrent;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal unsafe delegate void GetIntegerDelegate (int param, [Out] int* data);
|
|
internal static GetIntegerDelegate GetIntegerv;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate IntPtr GetStringDelegate (StringName param);
|
|
internal static GetStringDelegate GetStringInternal;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ClearDepthDelegate (float depth);
|
|
internal static ClearDepthDelegate ClearDepth;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DepthRangedDelegate (double min, double max);
|
|
internal static DepthRangedDelegate DepthRanged;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DepthRangefDelegate (float min, float max);
|
|
internal static DepthRangefDelegate DepthRangef;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ClearDelegate (ClearBufferMask mask);
|
|
internal static ClearDelegate Clear;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ClearColorDelegate (float red, float green, float blue, float alpha);
|
|
internal static ClearColorDelegate ClearColor;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ClearStencilDelegate (int stencil);
|
|
internal static ClearStencilDelegate ClearStencil;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ViewportDelegate (int x, int y, int w, int h);
|
|
internal static ViewportDelegate Viewport;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate ErrorCode GetErrorDelegate ();
|
|
internal static GetErrorDelegate GetError;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void FlushDelegate ();
|
|
internal static FlushDelegate Flush;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GenTexturesDelegte (int count, [Out] out int id);
|
|
internal static GenTexturesDelegte GenTextures;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BindTextureDelegate (TextureTarget target, int id);
|
|
internal static BindTextureDelegate BindTexture;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate int EnableDelegate (EnableCap cap);
|
|
internal static EnableDelegate Enable;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate int DisableDelegate (EnableCap cap);
|
|
internal static DisableDelegate Disable;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void CullFaceDelegate (CullFaceMode mode);
|
|
internal static CullFaceDelegate CullFace;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void FrontFaceDelegate (FrontFaceDirection direction);
|
|
internal static FrontFaceDelegate FrontFace;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void PolygonModeDelegate (MaterialFace face, PolygonMode mode);
|
|
internal static PolygonModeDelegate PolygonMode;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void PolygonOffsetDelegate (float slopeScaleDepthBias, float depthbias);
|
|
internal static PolygonOffsetDelegate PolygonOffset;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DrawBuffersDelegate (int count, DrawBuffersEnum [] buffers);
|
|
internal static DrawBuffersDelegate DrawBuffers;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void UseProgramDelegate (int program);
|
|
internal static UseProgramDelegate UseProgram;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal unsafe delegate void Uniform4fvDelegate (int location, int size, float* values);
|
|
internal static Uniform4fvDelegate Uniform4fv;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void Uniform1iDelegate (int location, int value);
|
|
internal static Uniform1iDelegate Uniform1i;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ScissorDelegate (int x, int y, int width, int height);
|
|
internal static ScissorDelegate Scissor;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ReadPixelsDelegate (int x, int y, int width, int height, PixelFormat format, PixelType type, IntPtr data);
|
|
internal static ReadPixelsDelegate ReadPixelsInternal;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BindBufferDelegate (BufferTarget target, int buffer);
|
|
internal static BindBufferDelegate BindBuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DrawElementsDelegate (GLPrimitiveType primitiveType, int count, DrawElementsType elementType, IntPtr offset);
|
|
internal static DrawElementsDelegate DrawElements;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DrawArraysDelegate (GLPrimitiveType primitiveType, int offset, int count);
|
|
internal static DrawArraysDelegate DrawArrays;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GenRenderbuffersDelegate (int count, [Out] out int buffer);
|
|
internal static GenRenderbuffersDelegate GenRenderbuffers;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BindRenderbufferDelegate (RenderbufferTarget target, int buffer);
|
|
internal static BindRenderbufferDelegate BindRenderbuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DeleteRenderbuffersDelegate (int count, [In] [Out] ref int buffer);
|
|
internal static DeleteRenderbuffersDelegate DeleteRenderbuffers;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void RenderbufferStorageMultisampleDelegate (RenderbufferTarget target, int sampleCount,
|
|
RenderbufferStorage storage, int width, int height);
|
|
internal static RenderbufferStorageMultisampleDelegate RenderbufferStorageMultisample;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GenFramebuffersDelegate (int count, out int buffer);
|
|
internal static GenFramebuffersDelegate GenFramebuffers;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BindFramebufferDelegate (FramebufferTarget target, int buffer);
|
|
internal static BindFramebufferDelegate BindFramebuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DeleteFramebuffersDelegate (int count, ref int buffer);
|
|
internal static DeleteFramebuffersDelegate DeleteFramebuffers;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
public delegate void InvalidateFramebufferDelegate (FramebufferTarget target, int numAttachments, FramebufferAttachment [] attachments);
|
|
public static InvalidateFramebufferDelegate InvalidateFramebuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void FramebufferTexture2DDelegate (FramebufferTarget target, FramebufferAttachment attachement,
|
|
TextureTarget textureTarget, int texture, int level);
|
|
internal static FramebufferTexture2DDelegate FramebufferTexture2D;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void FramebufferTexture2DMultiSampleDelegate (FramebufferTarget target, FramebufferAttachment attachement,
|
|
TextureTarget textureTarget, int texture, int level, int samples);
|
|
internal static FramebufferTexture2DMultiSampleDelegate FramebufferTexture2DMultiSample;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void FramebufferRenderbufferDelegate (FramebufferTarget target, FramebufferAttachment attachement,
|
|
RenderbufferTarget renderBufferTarget, int buffer);
|
|
internal static FramebufferRenderbufferDelegate FramebufferRenderbuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
public delegate void RenderbufferStorageDelegate (RenderbufferTarget target, RenderbufferStorage storage, int width, int hegiht);
|
|
public static RenderbufferStorageDelegate RenderbufferStorage;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GenerateMipmapDelegate (GenerateMipmapTarget target);
|
|
internal static GenerateMipmapDelegate GenerateMipmap;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ReadBufferDelegate (ReadBufferMode buffer);
|
|
internal static ReadBufferDelegate ReadBuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DrawBufferDelegate (DrawBufferMode buffer);
|
|
internal static DrawBufferDelegate DrawBuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BlitFramebufferDelegate (int srcX0,
|
|
int srcY0,
|
|
int srcX1,
|
|
int srcY1,
|
|
int dstX0,
|
|
int dstY0,
|
|
int dstX1,
|
|
int dstY1,
|
|
ClearBufferMask mask,
|
|
BlitFramebufferFilter filter);
|
|
internal static BlitFramebufferDelegate BlitFramebuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate FramebufferErrorCode CheckFramebufferStatusDelegate (FramebufferTarget target);
|
|
internal static CheckFramebufferStatusDelegate CheckFramebufferStatus;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void TexParameterFloatDelegate (TextureTarget target, TextureParameterName name, float value);
|
|
internal static TexParameterFloatDelegate TexParameterf;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal unsafe delegate void TexParameterFloatArrayDelegate (TextureTarget target, TextureParameterName name, float* values);
|
|
internal static TexParameterFloatArrayDelegate TexParameterfv;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void TexParameterIntDelegate (TextureTarget target, TextureParameterName name, int value);
|
|
internal static TexParameterIntDelegate TexParameteri;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GenQueriesDelegate (int count, [Out] out int queryId);
|
|
internal static GenQueriesDelegate GenQueries;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BeginQueryDelegate (QueryTarget target, int queryId);
|
|
internal static BeginQueryDelegate BeginQuery;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void EndQueryDelegate (QueryTarget target);
|
|
internal static EndQueryDelegate EndQuery;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GetQueryObjectDelegate (int queryId, GetQueryObjectParam getparam, [Out] out int ready);
|
|
internal static GetQueryObjectDelegate GetQueryObject;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DeleteQueriesDelegate (int count, [In] [Out] ref int queryId);
|
|
internal static DeleteQueriesDelegate DeleteQueries;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ActiveTextureDelegate (TextureUnit textureUnit);
|
|
internal static ActiveTextureDelegate ActiveTexture;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate int CreateShaderDelegate (ShaderType type);
|
|
internal static CreateShaderDelegate CreateShader;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal unsafe delegate void ShaderSourceDelegate (int shaderId, int count, IntPtr code, int* length);
|
|
internal static ShaderSourceDelegate ShaderSourceInternal;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void CompileShaderDelegate (int shaderId);
|
|
internal static CompileShaderDelegate CompileShader;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal unsafe delegate void GetShaderDelegate (int shaderId, int parameter, int* value);
|
|
internal static GetShaderDelegate GetShaderiv;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GetShaderInfoLogDelegate (int shader, int bufSize, IntPtr length, StringBuilder infoLog);
|
|
internal static GetShaderInfoLogDelegate GetShaderInfoLogInternal;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate bool IsShaderDelegate (int shaderId);
|
|
internal static IsShaderDelegate IsShader;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DeleteShaderDelegate (int shaderId);
|
|
internal static DeleteShaderDelegate DeleteShader;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate int GetAttribLocationDelegate (int programId, string name);
|
|
internal static GetAttribLocationDelegate GetAttribLocation;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate int GetUniformLocationDelegate (int programId, string name);
|
|
internal static GetUniformLocationDelegate GetUniformLocation;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate bool IsProgramDelegate (int programId);
|
|
internal static IsProgramDelegate IsProgram;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DeleteProgramDelegate (int programId);
|
|
internal static DeleteProgramDelegate DeleteProgram;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate int CreateProgramDelegate ();
|
|
internal static CreateProgramDelegate CreateProgram;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void AttachShaderDelegate (int programId, int shaderId);
|
|
internal static AttachShaderDelegate AttachShader;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void LinkProgramDelegate (int programId);
|
|
internal static LinkProgramDelegate LinkProgram;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal unsafe delegate void GetProgramDelegate (int programId, int name, int* linked);
|
|
internal static GetProgramDelegate GetProgramiv;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GetProgramInfoLogDelegate (int program, int bufSize, IntPtr length, StringBuilder infoLog);
|
|
internal static GetProgramInfoLogDelegate GetProgramInfoLogInternal;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DetachShaderDelegate (int programId, int shaderId);
|
|
internal static DetachShaderDelegate DetachShader;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BlendColorDelegate (float r, float g, float b, float a);
|
|
internal static BlendColorDelegate BlendColor;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BlendEquationSeparateDelegate (BlendEquationMode colorMode, BlendEquationMode alphaMode);
|
|
internal static BlendEquationSeparateDelegate BlendEquationSeparate;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BlendFuncSeparateDelegate (BlendingFactorSrc colorSrc, BlendingFactorDest colorDst,
|
|
BlendingFactorSrc alphaSrc, BlendingFactorDest alphaDst);
|
|
internal static BlendFuncSeparateDelegate BlendFuncSeparate;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void ColorMaskDelegate (bool r, bool g, bool b, bool a);
|
|
internal static ColorMaskDelegate ColorMask;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DepthFuncDelegate (DepthFunction function);
|
|
internal static DepthFuncDelegate DepthFunc;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DepthMaskDelegate (bool enabled);
|
|
internal static DepthMaskDelegate DepthMask;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void StencilFuncSeparateDelegate (StencilFace face, GLStencilFunction function, int referenceStencil, int mask);
|
|
internal static StencilFuncSeparateDelegate StencilFuncSeparate;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void StencilOpSeparateDelegate (StencilFace face, StencilOp stencilfail, StencilOp depthFail, StencilOp pass);
|
|
internal static StencilOpSeparateDelegate StencilOpSeparate;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void StencilFuncDelegate (GLStencilFunction function, int referenceStencil, int mask);
|
|
internal static StencilFuncDelegate StencilFunc;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void StencilOpDelegate (StencilOp stencilfail, StencilOp depthFail, StencilOp pass);
|
|
internal static StencilOpDelegate StencilOp;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void StencilMaskDelegate (int mask);
|
|
internal static StencilMaskDelegate StencilMask;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void CompressedTexImage2DDelegate (TextureTarget target, int level, PixelInternalFormat internalFormat,
|
|
int width, int height, int border, int size, IntPtr data);
|
|
internal static CompressedTexImage2DDelegate CompressedTexImage2D;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void TexImage2DDelegate (TextureTarget target, int level, PixelInternalFormat internalFormat,
|
|
int width, int height, int border, PixelFormat format, PixelType pixelType, IntPtr data);
|
|
internal static TexImage2DDelegate TexImage2D;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void CompressedTexSubImage2DDelegate (TextureTarget target, int level,
|
|
int x, int y, int width, int height, PixelInternalFormat format, int size, IntPtr data);
|
|
internal static CompressedTexSubImage2DDelegate CompressedTexSubImage2D;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void TexSubImage2DDelegate (TextureTarget target, int level,
|
|
int x, int y, int width, int height, PixelFormat format, PixelType pixelType, IntPtr data);
|
|
internal static TexSubImage2DDelegate TexSubImage2D;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void PixelStoreDelegate (PixelStoreParameter parameter, int size);
|
|
internal static PixelStoreDelegate PixelStore;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void FinishDelegate ();
|
|
internal static FinishDelegate Finish;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GetTexImageDelegate (TextureTarget target, int level, PixelFormat format, PixelType type, [Out] IntPtr pixels);
|
|
internal static GetTexImageDelegate GetTexImageInternal;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GetCompressedTexImageDelegate (TextureTarget target, int level, [Out] IntPtr pixels);
|
|
internal static GetCompressedTexImageDelegate GetCompressedTexImageInternal;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void TexImage3DDelegate (TextureTarget target, int level, PixelInternalFormat internalFormat,
|
|
int width, int height, int depth, int border, PixelFormat format, PixelType pixelType, IntPtr data);
|
|
internal static TexImage3DDelegate TexImage3D;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void TexSubImage3DDelegate (TextureTarget target, int level,
|
|
int x, int y, int z, int width, int height, int depth, PixelFormat format, PixelType pixelType, IntPtr data);
|
|
internal static TexSubImage3DDelegate TexSubImage3D;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DeleteTexturesDelegate (int count, ref int id);
|
|
internal static DeleteTexturesDelegate DeleteTextures;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void GenBuffersDelegate (int count, out int buffer);
|
|
internal static GenBuffersDelegate GenBuffers;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BufferDataDelegate (BufferTarget target, IntPtr size, IntPtr n, BufferUsageHint usage);
|
|
internal static BufferDataDelegate BufferData;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate IntPtr MapBufferDelegate (BufferTarget target, BufferAccess access);
|
|
internal static MapBufferDelegate MapBuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void UnmapBufferDelegate (BufferTarget target);
|
|
internal static UnmapBufferDelegate UnmapBuffer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void BufferSubDataDelegate (BufferTarget target, IntPtr offset, IntPtr size, IntPtr data);
|
|
internal static BufferSubDataDelegate BufferSubData;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DeleteBuffersDelegate (int count, [In] [Out] ref int buffer);
|
|
internal static DeleteBuffersDelegate DeleteBuffers;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void VertexAttribPointerDelegate (int location, int elementCount, VertexAttribPointerType type, bool normalize,
|
|
int stride, IntPtr data);
|
|
internal static VertexAttribPointerDelegate VertexAttribPointer;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void DrawElementsInstancedDelegate (GLPrimitiveType primitiveType, int count, DrawElementsType elementType,
|
|
IntPtr offset, int instanceCount);
|
|
internal static DrawElementsInstancedDelegate DrawElementsInstanced;
|
|
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
internal delegate void VertexAttribDivisorDelegate (int location, int frequency);
|
|
internal static VertexAttribDivisorDelegate VertexAttribDivisor;
|
|
|
|
#if DEBUG
|
|
[UnmanagedFunctionPointer (CallingConvention.StdCall)]
|
|
delegate void DebugMessageCallbackProc (int source, int type, int id, int severity, int length, IntPtr message, IntPtr userParam);
|
|
static DebugMessageCallbackProc DebugProc;
|
|
[System.Security.SuppressUnmanagedCodeSecurity ()]
|
|
[MonoNativeFunctionWrapper]
|
|
delegate void DebugMessageCallbackDelegate (DebugMessageCallbackProc callback, IntPtr userParam);
|
|
static DebugMessageCallbackDelegate DebugMessageCallback;
|
|
|
|
internal delegate void ErrorDelegate (string message);
|
|
internal static event ErrorDelegate OnError;
|
|
|
|
static void DebugMessageCallbackHandler(int source, int type, int id, int severity, int length, IntPtr message, IntPtr userParam)
|
|
{
|
|
var errorMessage = Marshal.PtrToStringAnsi(message);
|
|
System.Diagnostics.Debug.WriteLine(errorMessage);
|
|
if (OnError != null)
|
|
OnError(errorMessage);
|
|
}
|
|
#endif
|
|
|
|
internal static int SwapInterval { get; set; }
|
|
|
|
internal static void LoadEntryPoints ()
|
|
{
|
|
LoadPlatformEntryPoints ();
|
|
|
|
if (Viewport == null)
|
|
Viewport = LoadFunction<ViewportDelegate> ("glViewport");
|
|
if (Scissor == null)
|
|
Scissor = LoadFunction<ScissorDelegate> ("glScissor");
|
|
if (MakeCurrent == null)
|
|
MakeCurrent = LoadFunction<MakeCurrentDelegate> ("glMakeCurrent");
|
|
|
|
GetError = LoadFunction<GetErrorDelegate> ("glGetError");
|
|
|
|
TexParameterf = LoadFunction<TexParameterFloatDelegate> ("glTexParameterf");
|
|
TexParameterfv = LoadFunction<TexParameterFloatArrayDelegate> ("glTexParameterfv");
|
|
TexParameteri = LoadFunction<TexParameterIntDelegate> ("glTexParameteri");
|
|
|
|
EnableVertexAttribArray = LoadFunction<EnableVertexAttribArrayDelegate> ("glEnableVertexAttribArray");
|
|
DisableVertexAttribArray = LoadFunction<DisableVertexAttribArrayDelegate> ("glDisableVertexAttribArray");
|
|
GetIntegerv = LoadFunction<GetIntegerDelegate> ("glGetIntegerv");
|
|
GetStringInternal = LoadFunction<GetStringDelegate> ("glGetString");
|
|
ClearDepth = LoadFunction<ClearDepthDelegate> ("glClearDepth");
|
|
if (ClearDepth == null)
|
|
ClearDepth = LoadFunction<ClearDepthDelegate> ("glClearDepthf");
|
|
DepthRanged = LoadFunction<DepthRangedDelegate> ("glDepthRange");
|
|
DepthRangef = LoadFunction<DepthRangefDelegate> ("glDepthRangef");
|
|
Clear = LoadFunction<ClearDelegate> ("glClear");
|
|
ClearColor = LoadFunction<ClearColorDelegate> ("glClearColor");
|
|
ClearStencil = LoadFunction<ClearStencilDelegate> ("glClearStencil");
|
|
Flush = LoadFunction<FlushDelegate> ("glFlush");
|
|
GenTextures = LoadFunction<GenTexturesDelegte> ("glGenTextures");
|
|
BindTexture = LoadFunction<BindTextureDelegate> ("glBindTexture");
|
|
|
|
Enable = LoadFunction<EnableDelegate> ("glEnable");
|
|
Disable = LoadFunction<DisableDelegate> ("glDisable");
|
|
CullFace = LoadFunction<CullFaceDelegate> ("glCullFace");
|
|
FrontFace = LoadFunction<FrontFaceDelegate> ("glFrontFace");
|
|
PolygonMode = LoadFunction<PolygonModeDelegate> ("glPolygonMode");
|
|
PolygonOffset = LoadFunction<PolygonOffsetDelegate> ("glPolygonOffset");
|
|
|
|
BindBuffer = LoadFunction<BindBufferDelegate> ("glBindBuffer");
|
|
DrawBuffers = LoadFunction<DrawBuffersDelegate> ("glDrawBuffers");
|
|
DrawElements = LoadFunction<DrawElementsDelegate> ("glDrawElements");
|
|
DrawArrays = LoadFunction<DrawArraysDelegate> ("glDrawArrays");
|
|
Uniform1i = LoadFunction<Uniform1iDelegate> ("glUniform1i");
|
|
Uniform4fv = LoadFunction<Uniform4fvDelegate> ("glUniform4fv");
|
|
ReadPixelsInternal = LoadFunction<ReadPixelsDelegate>("glReadPixels");
|
|
|
|
ReadBuffer = LoadFunction<ReadBufferDelegate> ("glReadBuffer");
|
|
DrawBuffer = LoadFunction<DrawBufferDelegate> ("glDrawBuffer");
|
|
|
|
// Render Target Support. These might be null if they are not supported
|
|
// see GraphicsDevice.OpenGL.FramebufferHelper.cs for handling other extensions.
|
|
GenRenderbuffers = LoadFunction<GenRenderbuffersDelegate> ("glGenRenderbuffers");
|
|
BindRenderbuffer = LoadFunction<BindRenderbufferDelegate> ("glBindRenderbuffer");
|
|
DeleteRenderbuffers = LoadFunction<DeleteRenderbuffersDelegate> ("glDeleteRenderbuffers");
|
|
GenFramebuffers = LoadFunction<GenFramebuffersDelegate> ("glGenFramebuffers");
|
|
BindFramebuffer = LoadFunction<BindFramebufferDelegate> ("glBindFramebuffer");
|
|
DeleteFramebuffers = LoadFunction<DeleteFramebuffersDelegate> ("glDeleteFramebuffers");
|
|
FramebufferTexture2D = LoadFunction<FramebufferTexture2DDelegate> ("glFramebufferTexture2D");
|
|
FramebufferRenderbuffer = LoadFunction<FramebufferRenderbufferDelegate> ("glFramebufferRenderbuffer");
|
|
RenderbufferStorage = LoadFunction<RenderbufferStorageDelegate> ("glRenderbufferStorage");
|
|
RenderbufferStorageMultisample = LoadFunction<RenderbufferStorageMultisampleDelegate> ("glRenderbufferStorageMultisample");
|
|
GenerateMipmap = LoadFunction<GenerateMipmapDelegate> ("glGenerateMipmap");
|
|
BlitFramebuffer = LoadFunction<BlitFramebufferDelegate> ("glBlitFramebuffer");
|
|
CheckFramebufferStatus = LoadFunction<CheckFramebufferStatusDelegate> ("glCheckFramebufferStatus");
|
|
|
|
GenQueries = LoadFunction<GenQueriesDelegate> ("glGenQueries");
|
|
BeginQuery = LoadFunction<BeginQueryDelegate> ("glBeginQuery");
|
|
EndQuery = LoadFunction<EndQueryDelegate> ("glEndQuery");
|
|
GetQueryObject = LoadFunction<GetQueryObjectDelegate>("glGetQueryObjectuiv");
|
|
if (GetQueryObject == null)
|
|
GetQueryObject = LoadFunction<GetQueryObjectDelegate> ("glGetQueryObjectivARB");
|
|
if (GetQueryObject == null)
|
|
GetQueryObject = LoadFunction<GetQueryObjectDelegate> ("glGetQueryObjectiv");
|
|
DeleteQueries = LoadFunction<DeleteQueriesDelegate> ("glDeleteQueries");
|
|
|
|
ActiveTexture = LoadFunction<ActiveTextureDelegate> ("glActiveTexture");
|
|
CreateShader = LoadFunction<CreateShaderDelegate> ("glCreateShader");
|
|
ShaderSourceInternal = LoadFunction<ShaderSourceDelegate> ("glShaderSource");
|
|
CompileShader = LoadFunction<CompileShaderDelegate> ("glCompileShader");
|
|
GetShaderiv = LoadFunction<GetShaderDelegate> ("glGetShaderiv");
|
|
GetShaderInfoLogInternal = LoadFunction<GetShaderInfoLogDelegate> ("glGetShaderInfoLog");
|
|
IsShader = LoadFunction<IsShaderDelegate> ("glIsShader");
|
|
DeleteShader = LoadFunction<DeleteShaderDelegate> ("glDeleteShader");
|
|
GetAttribLocation = LoadFunction<GetAttribLocationDelegate> ("glGetAttribLocation");
|
|
GetUniformLocation = LoadFunction<GetUniformLocationDelegate> ("glGetUniformLocation");
|
|
|
|
IsProgram = LoadFunction<IsProgramDelegate> ("glIsProgram");
|
|
DeleteProgram = LoadFunction<DeleteProgramDelegate> ("glDeleteProgram");
|
|
CreateProgram = LoadFunction<CreateProgramDelegate> ("glCreateProgram");
|
|
AttachShader = LoadFunction<AttachShaderDelegate> ("glAttachShader");
|
|
UseProgram = LoadFunction<UseProgramDelegate> ("glUseProgram");
|
|
LinkProgram = LoadFunction<LinkProgramDelegate> ("glLinkProgram");
|
|
GetProgramiv = LoadFunction<GetProgramDelegate> ("glGetProgramiv");
|
|
GetProgramInfoLogInternal = LoadFunction<GetProgramInfoLogDelegate> ("glGetProgramInfoLog");
|
|
DetachShader = LoadFunction<DetachShaderDelegate> ("glDetachShader");
|
|
|
|
BlendColor = LoadFunction<BlendColorDelegate> ("glBlendColor");
|
|
BlendEquationSeparate = LoadFunction<BlendEquationSeparateDelegate> ("glBlendEquationSeparate");
|
|
BlendFuncSeparate = LoadFunction<BlendFuncSeparateDelegate> ("glBlendFuncSeparate");
|
|
ColorMask = LoadFunction<ColorMaskDelegate> ("glColorMask");
|
|
DepthFunc = LoadFunction<DepthFuncDelegate> ("glDepthFunc");
|
|
DepthMask = LoadFunction<DepthMaskDelegate> ("glDepthMask");
|
|
StencilFuncSeparate = LoadFunction<StencilFuncSeparateDelegate> ("glStencilFuncSeparate");
|
|
StencilOpSeparate = LoadFunction<StencilOpSeparateDelegate> ("glStencilOpSeparate");
|
|
StencilFunc = LoadFunction<StencilFuncDelegate> ("glStencilFunc");
|
|
StencilOp = LoadFunction<StencilOpDelegate> ("glStencilOp");
|
|
StencilMask = LoadFunction<StencilMaskDelegate> ("glStencilMask");
|
|
|
|
CompressedTexImage2D = LoadFunction<CompressedTexImage2DDelegate> ("glCompressedTexImage2D");
|
|
TexImage2D = LoadFunction<TexImage2DDelegate> ("glTexImage2D");
|
|
CompressedTexSubImage2D = LoadFunction<CompressedTexSubImage2DDelegate> ("glCompressedTexSubImage2D");
|
|
TexSubImage2D = LoadFunction<TexSubImage2DDelegate> ("glTexSubImage2D");
|
|
PixelStore = LoadFunction<PixelStoreDelegate> ("glPixelStorei");
|
|
Finish = LoadFunction<FinishDelegate> ("glFinish");
|
|
GetTexImageInternal = LoadFunction<GetTexImageDelegate> ("glGetTexImage");
|
|
GetCompressedTexImageInternal = LoadFunction<GetCompressedTexImageDelegate> ("glGetCompressedTexImage");
|
|
TexImage3D = LoadFunction<TexImage3DDelegate> ("glTexImage3D");
|
|
TexSubImage3D = LoadFunction<TexSubImage3DDelegate> ("glTexSubImage3D");
|
|
DeleteTextures = LoadFunction<DeleteTexturesDelegate> ("glDeleteTextures");
|
|
|
|
GenBuffers = LoadFunction<GenBuffersDelegate> ("glGenBuffers");
|
|
BufferData = LoadFunction<BufferDataDelegate> ("glBufferData");
|
|
MapBuffer = LoadFunction<MapBufferDelegate> ("glMapBuffer");
|
|
UnmapBuffer = LoadFunction<UnmapBufferDelegate> ("glUnmapBuffer");
|
|
BufferSubData = LoadFunction<BufferSubDataDelegate> ("glBufferSubData");
|
|
DeleteBuffers = LoadFunction<DeleteBuffersDelegate> ("glDeleteBuffers");
|
|
|
|
VertexAttribPointer = LoadFunction<VertexAttribPointerDelegate> ("glVertexAttribPointer");
|
|
|
|
// Instanced drawing requires GL 3.2 or up, if the either of the following entry points can not be loaded
|
|
// this will get flagged by setting SupportsInstancing in GraphicsCapabilities to false.
|
|
try {
|
|
DrawElementsInstanced = LoadFunction<DrawElementsInstancedDelegate> ("glDrawElementsInstanced");
|
|
VertexAttribDivisor = LoadFunction<VertexAttribDivisorDelegate> ("glVertexAttribDivisor");
|
|
} catch (EntryPointNotFoundException) {
|
|
// this will be detected in the initialization of GraphicsCapabilities
|
|
}
|
|
|
|
#if DEBUG
|
|
try
|
|
{
|
|
DebugMessageCallback = LoadFunction<DebugMessageCallbackDelegate>("glDebugMessageCallback");
|
|
if (DebugMessageCallback != null)
|
|
{
|
|
DebugProc = DebugMessageCallbackHandler;
|
|
DebugMessageCallback(DebugProc, IntPtr.Zero);
|
|
Enable(EnableCap.DebugOutput);
|
|
Enable(EnableCap.DebugOutputSynchronous);
|
|
}
|
|
}
|
|
catch (EntryPointNotFoundException)
|
|
{
|
|
// Ignore the debug message callback if the entry point can not be found
|
|
}
|
|
#endif
|
|
if (BoundApi == RenderApi.ES) {
|
|
InvalidateFramebuffer = LoadFunction<InvalidateFramebufferDelegate> ("glDiscardFramebufferEXT");
|
|
}
|
|
|
|
LoadExtensions ();
|
|
}
|
|
|
|
internal static List<string> Extensions = new List<string> ();
|
|
|
|
//[Conditional("DEBUG")]
|
|
//[DebuggerHidden]
|
|
static void LogExtensions()
|
|
{
|
|
#if __ANDROID__
|
|
Android.Util.Log.Verbose("GL","Supported Extensions");
|
|
foreach (var ext in Extensions)
|
|
Android.Util.Log.Verbose("GL", " " + ext);
|
|
#endif
|
|
}
|
|
|
|
internal static void LoadExtensions()
|
|
{
|
|
string extstring = GL.GetString(StringName.Extensions);
|
|
var error = GL.GetError();
|
|
if (!string.IsNullOrEmpty(extstring) && error == ErrorCode.NoError)
|
|
Extensions.AddRange(extstring.Split(' '));
|
|
|
|
LogExtensions();
|
|
// now load Extensions :)
|
|
if (GL.GenRenderbuffers == null && Extensions.Contains("GL_EXT_framebuffer_object"))
|
|
{
|
|
GL.LoadFrameBufferObjectEXTEntryPoints();
|
|
}
|
|
if (GL.RenderbufferStorageMultisample == null)
|
|
{
|
|
if (Extensions.Contains("GL_APPLE_framebuffer_multisample"))
|
|
{
|
|
GL.RenderbufferStorageMultisample = LoadFunction<GL.RenderbufferStorageMultisampleDelegate>("glRenderbufferStorageMultisampleAPPLE");
|
|
GL.BlitFramebuffer = LoadFunction<GL.BlitFramebufferDelegate>("glResolveMultisampleFramebufferAPPLE");
|
|
}
|
|
else if (Extensions.Contains("GL_EXT_multisampled_render_to_texture"))
|
|
{
|
|
GL.RenderbufferStorageMultisample = LoadFunction<GL.RenderbufferStorageMultisampleDelegate>("glRenderbufferStorageMultisampleEXT");
|
|
GL.FramebufferTexture2DMultiSample = LoadFunction<GL.FramebufferTexture2DMultiSampleDelegate>("glFramebufferTexture2DMultisampleEXT");
|
|
|
|
}
|
|
else if (Extensions.Contains("GL_IMG_multisampled_render_to_texture"))
|
|
{
|
|
GL.RenderbufferStorageMultisample = LoadFunction<GL.RenderbufferStorageMultisampleDelegate>("glRenderbufferStorageMultisampleIMG");
|
|
GL.FramebufferTexture2DMultiSample = LoadFunction<GL.FramebufferTexture2DMultiSampleDelegate>("glFramebufferTexture2DMultisampleIMG");
|
|
}
|
|
else if (Extensions.Contains("GL_NV_framebuffer_multisample"))
|
|
{
|
|
GL.RenderbufferStorageMultisample = LoadFunction<GL.RenderbufferStorageMultisampleDelegate>("glRenderbufferStorageMultisampleNV");
|
|
GL.BlitFramebuffer = LoadFunction<GL.BlitFramebufferDelegate>("glBlitFramebufferNV");
|
|
}
|
|
}
|
|
}
|
|
|
|
internal static void LoadFrameBufferObjectEXTEntryPoints()
|
|
{
|
|
GenRenderbuffers = LoadFunction<GenRenderbuffersDelegate>("glGenRenderbuffersEXT");
|
|
BindRenderbuffer = LoadFunction<BindRenderbufferDelegate>("glBindRenderbufferEXT");
|
|
DeleteRenderbuffers = LoadFunction<DeleteRenderbuffersDelegate>("glDeleteRenderbuffersEXT");
|
|
GenFramebuffers = LoadFunction<GenFramebuffersDelegate>("glGenFramebuffersEXT");
|
|
BindFramebuffer = LoadFunction<BindFramebufferDelegate>("glBindFramebufferEXT");
|
|
DeleteFramebuffers = LoadFunction<DeleteFramebuffersDelegate>("glDeleteFramebuffersEXT");
|
|
FramebufferTexture2D = LoadFunction<FramebufferTexture2DDelegate>("glFramebufferTexture2DEXT");
|
|
FramebufferRenderbuffer = LoadFunction<FramebufferRenderbufferDelegate>("glFramebufferRenderbufferEXT");
|
|
RenderbufferStorage = LoadFunction<RenderbufferStorageDelegate>("glRenderbufferStorageEXT");
|
|
RenderbufferStorageMultisample = LoadFunction<RenderbufferStorageMultisampleDelegate>("glRenderbufferStorageMultisampleEXT");
|
|
GenerateMipmap = LoadFunction<GenerateMipmapDelegate>("glGenerateMipmapEXT");
|
|
BlitFramebuffer = LoadFunction<BlitFramebufferDelegate>("glBlitFramebufferEXT");
|
|
CheckFramebufferStatus = LoadFunction<CheckFramebufferStatusDelegate>("glCheckFramebufferStatusEXT");
|
|
}
|
|
|
|
static partial void LoadPlatformEntryPoints();
|
|
|
|
internal static IGraphicsContext CreateContext(IWindowInfo info)
|
|
{
|
|
return PlatformCreateContext(info);
|
|
}
|
|
|
|
/* Helper Functions */
|
|
|
|
internal static void DepthRange(float min, float max)
|
|
{
|
|
if (BoundApi == RenderApi.ES)
|
|
DepthRangef(min, max);
|
|
else
|
|
DepthRanged(min, max);
|
|
}
|
|
|
|
internal static void Uniform1 (int location, int value) {
|
|
Uniform1i(location, value);
|
|
}
|
|
|
|
internal static unsafe void Uniform4 (int location, int size, float* value) {
|
|
Uniform4fv(location, size, value);
|
|
}
|
|
|
|
internal unsafe static string GetString (StringName name)
|
|
{
|
|
return Marshal.PtrToStringAnsi (GetStringInternal (name));
|
|
}
|
|
|
|
protected static IntPtr MarshalStringArrayToPtr (string[] strings)
|
|
{
|
|
IntPtr intPtr = IntPtr.Zero;
|
|
if (strings != null && strings.Length != 0) {
|
|
intPtr = Marshal.AllocHGlobal (strings.Length * IntPtr.Size);
|
|
if (intPtr == IntPtr.Zero) {
|
|
throw new OutOfMemoryException ();
|
|
}
|
|
int i = 0;
|
|
try {
|
|
for (i = 0; i < strings.Length; i++) {
|
|
IntPtr val = MarshalStringToPtr (strings [i]);
|
|
Marshal.WriteIntPtr (intPtr, i * IntPtr.Size, val);
|
|
}
|
|
}
|
|
catch (OutOfMemoryException) {
|
|
for (i--; i >= 0; i--) {
|
|
Marshal.FreeHGlobal (Marshal.ReadIntPtr (intPtr, i * IntPtr.Size));
|
|
}
|
|
Marshal.FreeHGlobal (intPtr);
|
|
throw;
|
|
}
|
|
}
|
|
return intPtr;
|
|
}
|
|
|
|
protected unsafe static IntPtr MarshalStringToPtr (string str)
|
|
{
|
|
if (string.IsNullOrEmpty (str)) {
|
|
return IntPtr.Zero;
|
|
}
|
|
int num = Encoding.ASCII.GetMaxByteCount (str.Length) + 1;
|
|
IntPtr intPtr = Marshal.AllocHGlobal (num);
|
|
if (intPtr == IntPtr.Zero) {
|
|
throw new OutOfMemoryException ();
|
|
}
|
|
fixed (char* chars = str + RuntimeHelpers.OffsetToStringData / 2) {
|
|
int bytes = Encoding.ASCII.GetBytes (chars, str.Length, (byte*)((void*)intPtr), num);
|
|
Marshal.WriteByte (intPtr, bytes, 0);
|
|
return intPtr;
|
|
}
|
|
}
|
|
|
|
protected static void FreeStringArrayPtr (IntPtr ptr, int length)
|
|
{
|
|
for (int i = 0; i < length; i++) {
|
|
Marshal.FreeHGlobal (Marshal.ReadIntPtr (ptr, i * IntPtr.Size));
|
|
}
|
|
Marshal.FreeHGlobal (ptr);
|
|
}
|
|
|
|
internal static string GetProgramInfoLog (int programId)
|
|
{
|
|
int length = 0;
|
|
GetProgram(programId, GetProgramParameterName.LogLength, out length);
|
|
var sb = new StringBuilder();
|
|
GetProgramInfoLogInternal (programId, length, IntPtr.Zero, sb);
|
|
return sb.ToString();
|
|
}
|
|
|
|
internal static string GetShaderInfoLog (int shaderId) {
|
|
int length = 0;
|
|
GetShader(shaderId, ShaderParameter.LogLength, out length);
|
|
var sb = new StringBuilder();
|
|
GetShaderInfoLogInternal (shaderId, length, IntPtr.Zero, sb);
|
|
return sb.ToString();
|
|
}
|
|
|
|
internal unsafe static void ShaderSource(int shaderId, string code)
|
|
{
|
|
int length = code.Length;
|
|
IntPtr intPtr = MarshalStringArrayToPtr (new string[] { code });
|
|
ShaderSourceInternal(shaderId, 1, intPtr, &length);
|
|
FreeStringArrayPtr(intPtr, 1);
|
|
}
|
|
|
|
internal unsafe static void GetShader (int shaderId, ShaderParameter name, out int result)
|
|
{
|
|
fixed (int* ptr = &result)
|
|
{
|
|
GetShaderiv(shaderId, (int)name, ptr);
|
|
}
|
|
}
|
|
|
|
internal unsafe static void GetProgram(int programId, GetProgramParameterName name, out int result)
|
|
{
|
|
fixed (int* ptr = &result)
|
|
{
|
|
GetProgramiv(programId, (int)name, ptr);
|
|
}
|
|
}
|
|
|
|
internal unsafe static void GetInteger (GetPName name, out int value)
|
|
{
|
|
fixed (int* ptr = &value) {
|
|
GetIntegerv ((int)name, ptr);
|
|
}
|
|
}
|
|
|
|
internal unsafe static void GetInteger (int name, out int value)
|
|
{
|
|
fixed (int* ptr = &value)
|
|
{
|
|
GetIntegerv (name, ptr);
|
|
}
|
|
}
|
|
|
|
internal static void TexParameter(TextureTarget target, TextureParameterName name, float value)
|
|
{
|
|
TexParameterf(target, name, value);
|
|
}
|
|
|
|
internal unsafe static void TexParameter(TextureTarget target, TextureParameterName name, float[] values)
|
|
{
|
|
fixed (float* ptr = &values[0])
|
|
{
|
|
TexParameterfv(target, name, ptr);
|
|
}
|
|
}
|
|
|
|
internal static void TexParameter(TextureTarget target, TextureParameterName name, int value)
|
|
{
|
|
TexParameteri(target, name, value);
|
|
}
|
|
|
|
internal static void GetTexImage<T>(TextureTarget target, int level, PixelFormat format, PixelType type, T[] pixels) where T : struct
|
|
{
|
|
var pixelsPtr = GCHandle.Alloc(pixels, GCHandleType.Pinned);
|
|
try
|
|
{
|
|
GetTexImageInternal(target, level, format, type, pixelsPtr.AddrOfPinnedObject());
|
|
}
|
|
finally
|
|
{
|
|
pixelsPtr.Free();
|
|
}
|
|
}
|
|
|
|
internal static void GetCompressedTexImage<T>(TextureTarget target, int level, T[] pixels) where T : struct
|
|
{
|
|
var pixelsPtr = GCHandle.Alloc(pixels, GCHandleType.Pinned);
|
|
try
|
|
{
|
|
GetCompressedTexImageInternal(target, level, pixelsPtr.AddrOfPinnedObject());
|
|
}
|
|
finally
|
|
{
|
|
pixelsPtr.Free();
|
|
}
|
|
}
|
|
|
|
public static void ReadPixels<T>(int x, int y, int width, int height, PixelFormat format, PixelType type, T[] data)
|
|
{
|
|
var dataPtr = GCHandle.Alloc(data, GCHandleType.Pinned);
|
|
try
|
|
{
|
|
ReadPixelsInternal(x, y, width, height, format, type, dataPtr.AddrOfPinnedObject());
|
|
}
|
|
finally
|
|
{
|
|
dataPtr.Free();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|