Exemple #1
0
        public static HdriTexture LoadFromFile(string filePath)
        {
            var fileData   = File.ReadAllBytes(filePath);
            var image      = ImageResultFloat.FromMemory(fileData, ColorComponents.RedGreenBlue);
            var imageBytes = new List <byte>();

            foreach (var fl in image.Data)
            {
                var imageDataByteArray = BitConverter.GetBytes(fl);
                imageBytes.AddRange(imageDataByteArray);
            }

            var textureDataPtr = Marshal.AllocHGlobal(imageBytes.Count);

            Marshal.Copy(imageBytes.ToArray(), 0, textureDataPtr, imageBytes.Count);

            uint texturePtr = Gl.GenTexture();

            Gl.BindTexture(TextureTarget.Texture2d, texturePtr);

            Gl.TexImage2D(TextureTarget.Texture2d, 0, InternalFormat.Rgb16f, image.Width, image.Height, 0, PixelFormat.Rgb, PixelType.Float, textureDataPtr);

            Marshal.FreeHGlobal(textureDataPtr);

            Logging.Log($"Loaded cubemap texture {filePath}, ptr {texturePtr}");

            Gl.TexParameter(TextureTarget.Texture2d, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            Gl.TexParameter(TextureTarget.Texture2d, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
            Gl.TexParameter(TextureTarget.Texture2d, TextureParameterName.TextureWrapS, (int)TextureWrapMode.ClampToEdge);
            Gl.TexParameter(TextureTarget.Texture2d, TextureParameterName.TextureWrapT, (int)TextureWrapMode.ClampToEdge);

            Gl.BindTexture(TextureTarget.Texture2d, 0);

            return(new HdriTexture(texturePtr));
        }
Exemple #2
0
        public void LoadHdr(string filename, int width, int height, ColorComponents colorComponents)
        {
            ImageResultFloat result = null;

            using (var stream = _assembly.OpenResourceStream(filename))
            {
                result = ImageResultFloat.FromStream(stream, ColorComponents.RedGreenBlueAlpha);
            }

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Width, width);
            Assert.AreEqual(result.Height, height);
            Assert.AreEqual(result.Comp, ColorComponents.RedGreenBlueAlpha);
            Assert.AreEqual(result.SourceComp, colorComponents);
            Assert.IsNotNull(result.Data);
            Assert.AreEqual(result.Data.Length, result.Width * result.Height * 4);
        }