【问题标题】:Grayscale 8BPP bitmap for SharpDX.Direct2D1.BitmapSharpDX.Direct2D1.Bitmap 的灰度 8BPP 位图
【发布时间】:2017-07-06 12:50:10
【问题描述】:

我目前正在使用 SharpDX.Direct2D1 制作 2D 应用程序。

这是我的 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

我的问题:我想在我的 deviceContext 上以灰度绘制 8bpp 位图,这意味着我不需要它是每像素 32 位,这会占用大量内存。我希望它只有 8 位用于存储目的。当我这样做时的问题,这意味着设置我的BitmapProperties,只有一个Format.R8_Unorm 或Format.A8_Unorm,这似乎很有趣,因为我猜他们只有8bpp。但是,当我输入这种格式并尝试实例化我的 SharpDX.Direct2D1.Bitmap 时,它会返回一条错误消息,上面写着 WRONGPIXELFORMAT。

我意识到在创建位图时似乎只有Format.R8G8B8A8_Unorm 可以工作,而我不需要。

你们中有人在 SharpDX 上使用过 8bpp 灰度位图吗?

【问题讨论】:

    标签: c# vb.net sharpdx


    【解决方案1】:

    您不能将 8BPP 位图与 SharpDX (DirectX) 一起使用。这不是 DirectX 支持的格式。为了能够显示灰度图像,您必须将 rgb 的所有值设置为相同的值,或者将着色器应用于将所有颜色转换为灰色的图像。

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2019-02-10
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 1970-01-01
      • 2011-02-05
      • 2023-03-31
      相关资源
      最近更新 更多