private bool disposedValue = false; // 重複する呼び出しを検出するには protected virtual void Dispose(bool disposing) { if (!disposedValue) { if (disposing) { // TODO: マネージ状態を破棄します (マネージ オブジェクト)。 } // TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下のファイナライザーをオーバーライドします。 var p = m_p; m_p = default(IntPtr); if (p != default(IntPtr)) { StbImageDllImport.stbi_image_free(p); } // TODO: 大きなフィールドを null に設定します。 disposedValue = true; } }
public static ImageLoader Create(Byte[] bytes) { if (s_count++ == 0) { StbImageDllImport.stbi_set_flip_vertically_on_load(1); } int w, h, ch; var p = StbImageDllImport.stbi_load_from_memory(bytes, bytes.Length, out w, out h, out ch, 4); if (p == default(IntPtr)) { return(null); } if (ch != 4) { StbImage.StbImageDllImport.stbi_image_free(p); return(null); } return(new ImageLoader(p, w, h)); }