Axiom.RenderSystems.OpenGLES.GLESPixelUtil.GetGLOriginDataType C# (CSharp) Method

GetGLOriginDataType() public static method

Takes the Axiom pixel format and returns type that must be provided to GL as data type for reading it into the GPU
public static GetGLOriginDataType ( PixelFormat mFormat ) : OpenTK.Graphics.ES11.All
mFormat PixelFormat
return OpenTK.Graphics.ES11.All
		public static GLES.All GetGLOriginDataType( PixelFormat mFormat )
		{
			switch ( mFormat )
			{
				case PixelFormat.A8:
				case PixelFormat.L8:
				case PixelFormat.R8G8B8:
				case PixelFormat.B8G8R8:
				case PixelFormat.BYTE_LA:
					return GLES.All.UnsignedByte;
				case PixelFormat.R5G6B5:
				case PixelFormat.B5G6R5:
					return GLES.All.UnsignedShort565;
				case PixelFormat.L16:
					return GLES.All.UnsignedShort;

#if AXIOM_ENDIAN_BIG
				case PixelFormat.X8B8G8R8:
				case PixelFormat.A8B8G8R8:
#warning UnsignetInt8888Rev is missing
					return GLES.All.UnsignedInt248Oes;//GL_UNSIGNED_INT_8_8_8_8_REV;
				case PixelFormat.X8R8G8B8:
				case PixelFormat.A8R8G8B8:
#warning UnsignetInt8888Rev is missing
					return GLES.All.UnsignedInt248Oes;//GL_UNSIGNED_INT_8_8_8_8_REV;
				case PixelFormat.B8G8R8A8:
					return GLES.All.UnsignedByte;//GL_UNSIGNED_BYTE;
				case PixelFormat.R8G8B8A8:
					return GLES.All.UnsignedByte;//GL_UNSIGNED_BYTE;
#else
				case PixelFormat.X8B8G8R8:
				case PixelFormat.A8B8G8R8:
				case PixelFormat.X8R8G8B8:
				case PixelFormat.A8R8G8B8:
					return GLES.All.UnsignedByte;//GL_UNSIGNED_BYTE;
				case PixelFormat.B8G8R8A8:
				case PixelFormat.R8G8B8A8:
					return 0;
#endif

				case PixelFormat.FLOAT32_R:
				case PixelFormat.FLOAT32_GR:
				case PixelFormat.FLOAT32_RGB:
				case PixelFormat.FLOAT32_RGBA:
					return GLES.All.Flat;//GL_FLOAT;
				case PixelFormat.SHORT_RGBA:
				case PixelFormat.SHORT_RGB:
				case PixelFormat.SHORT_GR:
					return GLES.All.Float;//GL_UNSIGNED_SHORT;

				case PixelFormat.A2R10G10B10:
				case PixelFormat.A2B10G10R10:
				case PixelFormat.FLOAT16_R:
				case PixelFormat.FLOAT16_GR:
				case PixelFormat.FLOAT16_RGB:
				case PixelFormat.FLOAT16_RGBA:
				case PixelFormat.R3G3B2:
				case PixelFormat.A1R5G5B5:
				case PixelFormat.A4R4G4B4:
				// TODO not supported
				default:
					return 0;
			}
		}

Usage Example

Example #1
0
        protected static void BuildMipmaps(PixelBox data)
        {
            int      width  = 0;
            int      height = 0;
            int      logW   = 0;
            int      logH   = 0;
            int      level  = 0;
            PixelBox scaled = data;

            scaled.Data   = data.Data;
            scaled.Left   = data.Left;
            scaled.Right  = data.Right;
            scaled.Top    = data.Top;
            scaled.Bottom = data.Bottom;
            scaled.Front  = data.Front;
            scaled.Back   = data.Back;

            All format   = GLESPixelUtil.GetGLOriginFormat(data.Format);
            All dataType = GLESPixelUtil.GetGLOriginDataType(data.Format);

            width  = data.Width;
            height = data.Height;

            logW  = ComputeLog(width);
            logH  = ComputeLog(height);
            level = (logW > logH ? logW : logH);

            for (int mip = 0; mip <= level; mip++)
            {
                format   = GLESPixelUtil.GetGLOriginFormat(scaled.Format);
                dataType = GLESPixelUtil.GetGLOriginDataType(scaled.Format);

                OpenGL.TexImage2D(All.Texture2D, mip, (int)format, width, height, 0, format, dataType, scaled.Data);

                GLESConfig.GlCheckError(null);

                if (mip != 0)
                {
                    scaled.Data = IntPtr.Zero;
                }

                if (width > 1)
                {
                    width = width / 2;
                }
                if (height > 1)
                {
                    height = height / 2;
                }

                int sizeInBytes = PixelUtil.GetMemorySize(width, height, 1, data.Format);
                scaled = new PixelBox(width, height, 1, data.Format);
                var dataarr = new byte[sizeInBytes];
                scaled.Data = Memory.PinObject(dataarr);
                Image.Scale(data, scaled, ImageFilter.Linear);
            }
        }
All Usage Examples Of Axiom.RenderSystems.OpenGLES.GLESPixelUtil::GetGLOriginDataType