Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        internal IntPtr MapBuffer(BindBufferTarget target, MapBufferAccess access)
        {
            var result = _glMapBuffer(target, access);

            CheckForError();
            return(result);
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 public GLBuffer(BindBufferTarget target, uint id)
 {
     this.Target = target;
     this.Id     = id;
 }
Esempio n. 6
0
 public void BindBufferBase(BindBufferTarget bindTarget, uint globalBindingIndex)
 {
     Context.BindBufferBase(bindTarget, globalBindingIndex, this.Handle);
 }
Esempio n. 7
0
 internal void UnmapBuffer(BindBufferTarget target)
 {
     _glUnmapBuffer(target);
     CheckForError();
 }
Esempio n. 8
0
 internal void BufferData(BindBufferTarget target, UnsafeBuffer data, BufferUsage usage)
 {
     _glBufferData(target, data.SizeInBytes, data.Pointer, usage);
     CheckForError();
 }
Esempio n. 9
0
 internal void BufferData(BindBufferTarget target, int size, IntPtr ptr, BufferUsage usage)
 {
     _glBufferData(target, size, IntPtr.Zero, usage);
     CheckForError();
 }
Esempio n. 10
0
 internal void GetBufferSubData(BindBufferTarget target, UnsafeBuffer data)
 {
     _glGetBufferSubData(target, 0, data.SizeInBytes, data.Pointer);
     CheckForError();
 }
Esempio n. 11
0
 internal void BufferSubData(BindBufferTarget target, int offset, int size, IntPtr data)
 {
     _glBufferSubData(target, offset, size, data);
     CheckForError();
 }
Esempio n. 12
0
 internal void BindBufferBase(BindBufferTarget target, uint index, uint buffer)
 {
     _glBindBufferBase(target, index, buffer);
     CheckForError();
 }
Esempio n. 13
0
 internal void BindBufferRange(BindBufferTarget target, uint index, uint bufferObject, uint offset, uint size)
 {
     _glBindBufferRange(target, index, bufferObject, offset, size);
     CheckForError();
 }
Esempio n. 14
0
 internal void BindBuffer(BindBufferTarget target, uint handle)
 {
     _glBindBuffer(target, handle);
     CheckForError();
 }