SlimDX (DirectX10) - 如何更改纹理中的纹素?
我尝试更改已加载的纹理的纹理像素。
我的假设是使用Texture2D::Map 和UnMap 函数,但是当我更改给定DataRectangle 的数据时没有任何变化。
我需要一个简单的示例,例如创建 128x128 的纹理,每侧都有从黑到白的渐变。
谢谢
ps:Direct3D 10 C++ 示例也可能有帮助,SlimDX 只是一个包装器,并且具有几乎相同的功能。
I try to change the texels of a Texture which is already loaded.
My assumption was to use the Texture2D::Map and UnMap functions, but there is no change when I change the data of given DataRectangle.
I need a simple example like, creating a texture of 128x128 with a gradient from black to white from each side.
Thx
ps: A Direct3D 10 C++ example may also help, SlimDX is only a wrapper and has nearly complete the same functions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
确保遵循“资源使用限制”部分中的规则:
MSDN:D3D10_USAGE
Make sure you follow the rules in the "Resource Usage Restrictions" section:
MSDN: D3D10_USAGE
这会覆盖每个新帧上的缓冲区,您可能需要使用 D3D10.MapMode.readwrite 或其他东西,如果您只想写入一个纹理元素,
您还需要使用其他写入函数之一在特定点写入数据矩形
this overwrites the buffer on every new frame, you may want to use a D3D10.MapMode.readwrite or something if ur only trying to write one texel
you will also need to write to the datarectangle in a specific point using one of the other write functions
这是我的 D3D10 2D 纹理加载器
使用该功能,您所需要做的就是将白色纹理传递到黑色纹理。 例如,要编写 256x256 纹理,每条水平线都比前一行亮,以下代码将起作用
This is my D3D10 2D texture loader
With that function all you need to do is pass in the whit to black texture. For example to write a 256x256 textue with each horizontal line being one brighter than the previous line the following code will work