private void BindBuffer(BindBufferTarget target, uint name) { if (!Enum.IsDefined(typeof(BindBufferTarget), target)) { SetLastError(ErrorCode.InvalidEnum); return; } if ((name != 0) && (!this.bufferNameList.Contains(name))) { SetLastError(ErrorCode.InvalidValue); return; } GLBuffer buffer = null; if (name != 0) { Dictionary <uint, GLBuffer> dict = this.nameBufferDict; if (dict.TryGetValue(name, out buffer)) { if (buffer.Target != target) { SetLastError(ErrorCode.InvalidOperation); return; } } else // create a new buffer object. { buffer = new GLBuffer(target, name); dict.Add(name, buffer); } } this.currentBufferDict[target] = buffer; }
internal IntPtr MapBuffer(BindBufferTarget target, MapBufferAccess access) { var result = _glMapBuffer(target, access); CheckForError(); return(result); }
public BufferObject(BufferObjectTypes type) : base() { this.Type = type; switch (type) { case BufferObjectTypes.Vertex: _bindTarget = BindBufferTarget.ArrayBuffer; break; case BufferObjectTypes.Index: _bindTarget = BindBufferTarget.ElementArrayBuffer; break; case BufferObjectTypes.Uniform: _bindTarget = BindBufferTarget.UniformBuffer; break; case BufferObjectTypes.ShaderStorage: _bindTarget = BindBufferTarget.ShaderStorageBuffer; break; default: throw new NotSupportedException(type.ToString()); } Initialize(Context.CreateBuffer()); }
private void BufferData(BindBufferTarget target, int size, IntPtr data, Usage usage) { if (!Enum.IsDefined(typeof(BindBufferTarget), target)) { SetLastError(ErrorCode.InvalidEnum); return; } if (!Enum.IsDefined(typeof(Usage), usage)) { SetLastError(ErrorCode.InvalidEnum); return; } if (size < 0) { SetLastError(ErrorCode.InvalidValue); return; } GLBuffer buffer = this.currentBufferDict[target]; if (buffer == null) { SetLastError(ErrorCode.InvalidOperation); return; } // TODO: GL_OUT_OF_MEMORY is generated if the GL is unable to create a data store with the specified size. buffer.SetData(size, data, usage); }
public GLBuffer(BindBufferTarget target, uint id) { this.Target = target; this.Id = id; }
public void BindBufferBase(BindBufferTarget bindTarget, uint globalBindingIndex) { Context.BindBufferBase(bindTarget, globalBindingIndex, this.Handle); }
internal void UnmapBuffer(BindBufferTarget target) { _glUnmapBuffer(target); CheckForError(); }
internal void BufferData(BindBufferTarget target, UnsafeBuffer data, BufferUsage usage) { _glBufferData(target, data.SizeInBytes, data.Pointer, usage); CheckForError(); }
internal void BufferData(BindBufferTarget target, int size, IntPtr ptr, BufferUsage usage) { _glBufferData(target, size, IntPtr.Zero, usage); CheckForError(); }
internal void GetBufferSubData(BindBufferTarget target, UnsafeBuffer data) { _glGetBufferSubData(target, 0, data.SizeInBytes, data.Pointer); CheckForError(); }
internal void BufferSubData(BindBufferTarget target, int offset, int size, IntPtr data) { _glBufferSubData(target, offset, size, data); CheckForError(); }
internal void BindBufferBase(BindBufferTarget target, uint index, uint buffer) { _glBindBufferBase(target, index, buffer); CheckForError(); }
internal void BindBufferRange(BindBufferTarget target, uint index, uint bufferObject, uint offset, uint size) { _glBindBufferRange(target, index, bufferObject, offset, size); CheckForError(); }
internal void BindBuffer(BindBufferTarget target, uint handle) { _glBindBuffer(target, handle); CheckForError(); }