gpt4 book ai didi

c# - 使用 SlimDX 从 RGBA 值创建纹理

转载 作者:行者123 更新时间:2023-11-30 17:14:41 25 4
gpt4 key购买 nike

这是我的第一篇关于堆栈溢出的文章!我在我的团队正在制作的游戏中使用 SlimDX,但遇到了问题。我正在尝试从 Color4 对象中的 RGBA 值创建一个 ShaderResourceView。我已经搜索过寻找我的问题的答案,这是我所得到的。

    private ShaderResourceView GetTexture(Device device, int width, int height, Color4 color)
{
//create the texture
Texture2D texture = null;
Texture2DDescription desc2 = new Texture2DDescription();
desc2.SampleDescription = new SlimDX.DXGI.SampleDescription(1, 0);
desc2.Width = width;
desc2.Height = height;
desc2.MipLevels = 1;
desc2.ArraySize = 1;
desc2.Format = SlimDX.DXGI.Format.R8G8B8A8_UNorm;
desc2.Usage = ResourceUsage.Dynamic;
desc2.BindFlags = BindFlags.ShaderResource;
desc2.CpuAccessFlags = CpuAccessFlags.Write;
texture = new Texture2D(device, desc2);


// fill the texture with rgba values
DataRectangle rect = texture.Map(0, MapMode.WriteDiscard, MapFlags.None);
if (rect.Data.CanWrite)
{
for (int row = 0; row < texture.Description.Height; row++)
{
int rowStart = row * rect.Pitch;
rect.Data.Seek(rowStart, System.IO.SeekOrigin.Begin);
for (int col = 0; col < texture.Description.Width; col++)
{
rect.Data.WriteByte((byte)color.Red);
rect.Data.WriteByte((byte)color.Green);
rect.Data.WriteByte((byte)color.Blue);
rect.Data.WriteByte((byte)color.Alpha);
}
}
}
texture.Unmap(0);

// create shader resource that is what the renderer needs
ShaderResourceViewDescription desc = new ShaderResourceViewDescription();
desc.Format = texture.Description.Format;
desc.Dimension = ShaderResourceViewDimension.Texture2D;
desc.MostDetailedMip = 0;
desc.MipLevels = 1;
ShaderResourceView srv = new ShaderResourceView(device, texture, desc);

return srv;
}

我相信纹理的数据正在设置,但我不能确定,因为没有显示任何内容。我知道我的渲染器可以正常工作,因为我可以完美地从文件中加载纹理,但我似乎遇到了一个我找不到的问题。提前感谢您的帮助!

最佳答案

我的代码一直都是正确的。我觉得自己像个白痴,但我发现了我的问题,我没有为纹理设置 alpha 值所以它实际上被绘制了我只是看不到它 >_<;简单的错误总是嗯?感谢所有观看的人。

关于c# - 使用 SlimDX 从 RGBA 值创建纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8542927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com