【问题标题】:How do I set a pixel color in a texture using ManagedDX?如何使用 ManagedDX 在纹理中设置像素颜色?
【发布时间】:2010-12-06 16:28:25
【问题描述】:

大家好,我需要将纹理中的特定像素设置为自定义颜色, 为此我制作了一个位图,我总是在位图中设置像素, 然后我从位图中重新创建纹理。 这样做很费时间,有没有办法直接修改像素 在纹理中?

【问题讨论】:

    标签: c# directx gdi textures


    【解决方案1】:

    是的,您应该可以通过使用Texture.LockRectangle 函数来做到这一点。然后,您需要通过在流中跳转到 ((y * pitch) + (x * bytesPerPixel)) 来寻找正确的像素。您编写新像素并调用Texture.UnlockRectangle

    【讨论】:

    • 我如何找到每个像素的字节数和间距?
    • 间距由 LockRectangle 调用返回,每个像素的字节数由纹理格式定义。例如,A8R8G8B8 是 4 个字节,A1R5G5B5 是 2 个字节。将这些位相加并除以 8 以获得字节数。即 A8R8G8B8 = 8 + 8 + 8 + 8 = 32 位 / 8 = 4 字节。当然,如果纹理被压缩,你会遇到很多问题。修改压缩的纹素不是一个简单的过程,而且您需要以这种方式更新的纹理不应该被压缩。
    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多