| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using OpenTK.Graphics.OpenGL;
- using System;
- namespace Ryujinx.Graphics.Gal.OpenGL
- {
- class OGLStreamBuffer : IDisposable
- {
- public int Handle { get; protected set; }
- public long Size { get; protected set; }
- protected BufferTarget Target { get; private set; }
- public OGLStreamBuffer(BufferTarget Target, long Size)
- {
- this.Target = Target;
- this.Size = Size;
- Handle = GL.GenBuffer();
- GL.BindBuffer(Target, Handle);
- GL.BufferData(Target, (IntPtr)Size, IntPtr.Zero, BufferUsageHint.StreamDraw);
- }
- public void SetData(long Size, IntPtr HostAddress)
- {
- GL.BindBuffer(Target, Handle);
- GL.BufferSubData(Target, IntPtr.Zero, (IntPtr)Size, HostAddress);
- }
- public void SetData(byte[] Data)
- {
- GL.BindBuffer(Target, Handle);
- GL.BufferSubData(Target, IntPtr.Zero, (IntPtr)Data.Length, Data);
- }
- public void Dispose()
- {
- Dispose(true);
- }
- protected virtual void Dispose(bool Disposing)
- {
- if (Disposing && Handle != 0)
- {
- GL.DeleteBuffer(Handle);
- Handle = 0;
- }
- }
- }
- }
|