現在、SharpDX.Direct2D1
を使用して2Dアプリケーションを作成中です。SharpDX.Direct2D1.Bitmapのグレースケール8BPPビットマップ
正しく動作する2D deviceContextの設定です。
m_swapchaindesc = New SwapChainDescription()
With m_swapchaindesc
.BufferCount = 2
.ModeDescription =
New ModeDescription(control.Width, control.Height,
New Rational(60, 1), Format.R8G8B8A8_UNorm)
.IsWindowed = True
.OutputHandle = control.Handle
.SampleDescription = New SampleDescription(1, 0)
.SwapEffect = SwapEffect.Discard
.Usage = Usage.RenderTargetOutput
End With
SharpDX.Direct3D11.Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport Or DeviceCreationFlags.Debug, m_swapchaindesc, m_device, m_swapChain)
Dim dxgiDevice As SharpDX.DXGI.Device = m_device.QueryInterface(Of SharpDX.DXGI.Device)()
m_2dDevice = New SharpDX.Direct2D1.Device(dxgiDevice)
m_d2dContext = New SharpDX.Direct2D1.DeviceContext(m_2dDevice, SharpDX.Direct2D1.DeviceContextOptions.None)
m_properties = New BitmapProperties(New SharpDX.Direct2D1.PixelFormat(SharpDX.DXGI.Format.R8G8B8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Premultiplied), 96, 96)
m_backBuffer = m_swapChain.GetBackBuffer(Of Surface)(0)
m_2dTarget = New SharpDX.Direct2D1.Bitmap(m_d2dContext, m_backBuffer, m_properties)
m_d2dContext.Target = m_2dTarget
私の質問:私はメモリのlooootを取るピクセルあたり32ビットであることを、それを必要としないことを意味し、私のdeviceContextに、グレースケール、上の8bppのビットマップを描きたいです。私はそれがメモリの目的のためにわずか8ビットであることを望みます。私がそうするときの問題は、私がBitmapProperties
を設定することを意味し、Format.R8_Unorm
またはFormat.A8_Unorm
しかありません。私は彼らが8bppしか持っていないと思うので面白そうです。しかし、私はこのフォーマットを入れて、SharpDX.Direct2D1.Bitmap
をインスタンス化しようとしていますが、WRONGPIXELFORMATというエラーメッセージを返します。
ビットマップを作成するときにはFormat.R8G8B8A8_Unorm
しか動作しないように見えましたが、これは必要ありません。
SharpDXの8bppグレースケールビットマップで作業している人はいますか?