/// <summary> /// Deserializes the object and populates it from the input. /// </summary> /// <param name="input">Savable input</param> /// <exception cref="Tesla.Core.TeslaException">Thrown if creating the underlying implementation fails or the render /// system is not set.</exception> public override void Read(ISavableReader input) { IRenderSystemProvider renderSystem = input.RenderSystem; if (renderSystem == null) { Dispose(); throw new TeslaException("Render system provider not set, cannot create graphics resource implementation."); } base.RenderSystem = renderSystem; String name = input.ReadString(); SurfaceFormat format = input.ReadEnum <SurfaceFormat>(); int width = input.ReadInt(); int height = input.ReadInt(); int mipCount = input.ReadInt(); try { _impl = renderSystem.CreateTexture2DImplementation(width, height, mipCount > 1, format, null); for (int i = 0; i < mipCount; i++) { byte[] byteBuffer = input.ReadByteArray(); _impl.SetData <byte>(byteBuffer, i, null, 0, byteBuffer.Length); } } catch (Exception e) { Dispose(); throw new TeslaException("Error creating underlying implementation, see inner exception for details.", e); } }
/// <summary> /// Deserializes the object and populates it from the input. /// </summary> /// <param name="input">Savable input</param> /// <exception cref="Tesla.Core.TeslaException">Thrown if creating the underlying implementation fails or the render /// system is not set.</exception> public void Read(ISavableReader input) { IRenderSystemProvider renderSystem = input.RenderSystem; if (renderSystem == null) { Dispose(); throw new TeslaException("Render system provider not set, cannot create graphics resource implementation."); } base.RenderSystem = renderSystem; String name = input.ReadString(); VertexDeclaration decl = input.ReadSavable <VertexDeclaration>(); int vertexCount = input.ReadInt(); ResourceUsage usage = input.ReadEnum <ResourceUsage>(); byte[] byteBuffer = input.ReadByteArray(); try { _impl = renderSystem.CreateVertexBufferImplementation(decl, vertexCount, usage); _impl.Name = name; SetData <byte>(byteBuffer); } catch (Exception e) { Dispose(); throw new TeslaException("Error creating underlying implementation, see inner exception for details.", e); } }
/// <summary> /// Deserializes this Effect. /// </summary> /// <param name="input">Input to read from</param> /// <exception cref="Tesla.Core.TeslaException">Thrown if creating the underlying effect implementation fails or the render /// system is not set.</exception> public void Read(ISavableReader input) { IRenderSystemProvider renderSystem = input.RenderSystem; if (renderSystem == null) { Dispose(); throw new TeslaException("Render system provider not set, cannot create graphics resource implementation."); } base.RenderSystem = renderSystem; String name = input.ReadString(); _cachedByteCode = input.ReadByteArray(); try { _impl = renderSystem.CreateEffectImplementation(_cachedByteCode); _impl.Name = name; } catch (Exception e) { Dispose(); throw new TeslaException("Error creating underlying implementation, see inner exception for details.", e); } }