public void CreateVbo(long key, int dataSize, IntPtr hostAddress) { int handle = GL.GenBuffer(); _vboCache.AddOrUpdate(key, handle, dataSize); IntPtr length = new IntPtr(dataSize); GL.BindBuffer(BufferTarget.ArrayBuffer, handle); GL.BufferData(BufferTarget.ArrayBuffer, length, hostAddress, BufferUsageHint.StreamDraw); }
public void Create(long key, int size, GalImage image) { int handle = GL.GenTexture(); TextureTarget target = ImageUtils.GetTextureTarget(image.TextureTarget); GL.BindTexture(target, handle); const int level = 0; //TODO: Support mipmap textures. const int border = 0; _textureCache.AddOrUpdate(key, new ImageHandler(handle, image), (uint)size); if (ImageUtils.IsCompressed(image.Format)) { throw new InvalidOperationException("Surfaces with compressed formats are not supported!"); } (PixelInternalFormat internalFmt, PixelFormat format, PixelType type) = OglEnumConverter.GetImageFormat(image.Format); switch (target) { case TextureTarget.Texture1D: GL.TexImage1D( target, level, internalFmt, image.Width, border, format, type, IntPtr.Zero); break; case TextureTarget.Texture2D: GL.TexImage2D( target, level, internalFmt, image.Width, image.Height, border, format, type, IntPtr.Zero); break; case TextureTarget.Texture3D: GL.TexImage3D( target, level, internalFmt, image.Width, image.Height, image.Depth, border, format, type, IntPtr.Zero); break; case TextureTarget.Texture2DArray: GL.TexImage3D( target, level, internalFmt, image.Width, image.Height, image.LayerCount, border, format, type, IntPtr.Zero); break; default: throw new NotImplementedException($"Unsupported texture target type: {target}"); } }
public void Create(long key, long size) { OglStreamBuffer buffer = new OglStreamBuffer(BufferTarget.UniformBuffer, size); _cache.AddOrUpdate(key, buffer, size); }