// // Set Buffer Data // private static void SetBufferData(Renderer renderer, int target, int bufferId, int bufferOffset, bool discard, IntPtr dataPointer, int dataLength) { var state = (State)renderer.UserData; var dataBuffer = BufferSerializer.Convert( dataPointer, dataLength, state, bufferId); renderer.Send(false, () => { GLES20.glBindBuffer(target, bufferId); if (discard) { var sizeUsage = state.BufferSizeUsage[bufferId]; GLES20.glBufferData(target, sizeUsage[0], null, sizeUsage[1]); } GLES20.glBufferSubData(target, bufferOffset, dataLength, dataBuffer); }); }