private void GeneratePixelBufferObject(BufferTarget target, BufferUsageHint bufferUsage) { GL.GenBuffers(1, out pixelBufferObjectId); GL.BindBuffer(target, pixelBufferObjectId); GL.BufferData(target, (IntPtr)DepthPitch, IntPtr.Zero, bufferUsage); GL.BindBuffer(target, 0); }
private void GeneratePixelBufferObject(BufferTarget target, BufferUsageHint bufferUsage) { GL.GenBuffers(1, out pixelBufferObjectId); GL.BindBuffer(target, pixelBufferObjectId); if (RowPitch < 4) { GL.PixelStore(PixelStoreParameter.PackAlignment, 1); } GL.BufferData(target, (IntPtr)DepthPitch, IntPtr.Zero, bufferUsage); GL.BindBuffer(target, 0); }
protected void Init(IntPtr dataPointer) { #if SILICONSTUDIO_XENKO_GRAPHICS_API_OPENGLES if (GraphicsDevice.IsOpenGLES2 && ((Description.BufferFlags & BufferFlags.ConstantBuffer) == BufferFlags.ConstantBuffer || Description.Usage == GraphicsResourceUsage.Dynamic)) { if (dataPointer != IntPtr.Zero) { // Special case: ConstantBuffer are faked with a byte array on OpenGL ES 2.0. unsafe { Utilities.CopyMemory(StagingData, dataPointer, Description.SizeInBytes); } } return; } #endif switch (Description.Usage) { case GraphicsResourceUsage.Default: case GraphicsResourceUsage.Immutable: bufferUsageHint = BufferUsageHint.StaticDraw; break; case GraphicsResourceUsage.Dynamic: case GraphicsResourceUsage.Staging: bufferUsageHint = BufferUsageHint.DynamicDraw; break; default: throw new ArgumentOutOfRangeException("description.Usage"); } using (var creationContext = GraphicsDevice.UseOpenGLCreationContext()) { // If we're on main context, unbind VAO before binding context. // It will be bound again on next draw. if (!creationContext.UseDeviceCreationContext) { GraphicsDevice.UnbindVertexArrayObject(); } GL.GenBuffers(1, out resourceId); GL.BindBuffer(bufferTarget, resourceId); GL.BufferData(bufferTarget, (IntPtr)Description.SizeInBytes, dataPointer, bufferUsageHint); GL.BindBuffer(bufferTarget, 0); } }
protected void Init(IntPtr dataPointer) { #if SILICONSTUDIO_PARADOX_GRAPHICS_API_OPENGLES if (GraphicsDevice.IsOpenGLES2 && ((Description.BufferFlags & BufferFlags.ConstantBuffer) == BufferFlags.ConstantBuffer || Description.Usage == GraphicsResourceUsage.Dynamic)) { if (dataPointer != IntPtr.Zero) { // Special case: ConstantBuffer are faked with a byte array on OpenGL ES 2.0. unsafe { Utilities.CopyMemory(StagingData, dataPointer, Description.SizeInBytes); } } return; } #endif switch (Description.Usage) { case GraphicsResourceUsage.Default: case GraphicsResourceUsage.Immutable: bufferUsageHint = BufferUsageHint.StaticDraw; break; case GraphicsResourceUsage.Dynamic: case GraphicsResourceUsage.Staging: bufferUsageHint = BufferUsageHint.DynamicDraw; break; default: throw new ArgumentOutOfRangeException("description.Usage"); } using (var creationContext = GraphicsDevice.UseOpenGLCreationContext()) { // If we're on main context, unbind VAO before binding context. // It will be bound again on next draw. if (!creationContext.UseDeviceCreationContext) GraphicsDevice.UnbindVertexArrayObject(); GL.GenBuffers(1, out resourceId); GL.BindBuffer(bufferTarget, resourceId); GL.BufferData(bufferTarget, (IntPtr)Description.SizeInBytes, dataPointer, bufferUsageHint); GL.BindBuffer(bufferTarget, 0); } }
private void GeneratePixelBufferObject(BufferTarget target, BufferUsageHint bufferUsage) { GL.GenBuffers(1, out pixelBufferObjectId); GL.BindBuffer(target, pixelBufferObjectId); if (RowPitch < 4) GL.PixelStore(PixelStoreParameter.PackAlignment, 1); GL.BufferData(target, (IntPtr)DepthPitch, IntPtr.Zero, bufferUsage); GL.BindBuffer(target, 0); }