public OpenGLESTexture2D( int mipLevels, int width, int height, PixelFormat veldridFormat, OpenTK.Graphics.ES30.PixelFormat pixelFormat, PixelType pixelType) : base(TextureTarget.Texture2D, width, height) { MipLevels = mipLevels; _veldridFormat = veldridFormat; _pixelFormat = pixelFormat; _pixelType = pixelType; _texComponentCount = OpenGLESFormats.MapTextureComponentCount(veldridFormat, pixelFormat == OpenTK.Graphics.ES30.PixelFormat.DepthComponent); Bind(); for (int currentLevel = 0; currentLevel < mipLevels; currentLevel++) { // Set size, load empty data into texture GL.TexImage2D( TextureTarget2d.Texture2D, currentLevel, _texComponentCount, width, height, 0, // border _pixelFormat, _pixelType, IntPtr.Zero); Utilities.CheckLastGLES3Error(); width = Math.Max(1, width / 2); height = Math.Max(1, height / 2); } }
public OpenGLTexture2D( int width, int height, PixelFormat veldridFormat, PixelInternalFormat internalFormat, OpenTK.Graphics.OpenGL.PixelFormat pixelFormat, PixelType pixelType, IntPtr pixelData) : base(TextureTarget.Texture2D, width, height) { _veldridFormat = veldridFormat; _internalFormat = internalFormat; _pixelFormat = pixelFormat; _pixelType = pixelType; Bind(); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest); // Set size, load empty data into texture GL.TexImage2D( TextureTarget.Texture2D, 0, // level internalFormat, width, height, 0, // border _pixelFormat, _pixelType, pixelData); }
Graphics.PixelFormat StorageFormatToPixelFormat() { Graphics.PixelFormat format = Graphics.PixelFormat.R16G16B16A16_Float; switch (StorageFormat) { case StorageFormats.RGBA8: format = Graphics.PixelFormat.R8G8B8A8_UNorm; break; case StorageFormats.R10G10B10A2: format = Graphics.PixelFormat.R10G10B10A2_UNorm; break; case StorageFormats.RGBA16F: format = Graphics.PixelFormat.R16G16B16A16_Float; break; } return(format); }
public void PrepareLocalStorage(VoxelStorageContext context, IVoxelStorage storage) { StorageMethod.PrepareLocalStorage(context, storage, 4, 1); Graphics.PixelFormat format = Graphics.PixelFormat.R16G16B16A16_Float; switch (StorageFormat) { case StorageFormats.RGBA8: format = Graphics.PixelFormat.R8G8B8A8_UNorm; break; case StorageFormats.R10G10B10A2: format = Graphics.PixelFormat.R10G10B10A2_UNorm; break; case StorageFormats.RGBA16F: format = Graphics.PixelFormat.R16G16B16A16_Float; break; } storage.UpdateTexture(context, ref IsotropicTex, format, 1); }
public OpenGLTexture2D( int mipLevels, int width, int height, PixelFormat veldridFormat, PixelInternalFormat internalFormat, OpenTK.Graphics.OpenGL.PixelFormat pixelFormat, PixelType pixelType) : base(TextureTarget.Texture2D, width, height) { MipLevels = mipLevels; _veldridFormat = veldridFormat; _internalFormat = internalFormat; _pixelFormat = pixelFormat; _pixelType = pixelType; Bind(); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); for (int currentLevel = 0; currentLevel < mipLevels; currentLevel++) { // Set size, load empty data into texture GL.TexImage2D( TextureTarget.Texture2D, currentLevel, internalFormat, width, height, 0, // border _pixelFormat, _pixelType, IntPtr.Zero); Utilities.CheckLastGLError(); width = Math.Max(1, width / 2); height = Math.Max(1, height / 2); } }