如何在 XNA 4.0 中取消设置纹理数据
我需要将一些不断变化的数据传递给我的像素着色器。我有一个texture2d,我通过纹理参数传递给我的像素着色器。在调用着色器之前,我需要更新纹理中的数据。
emittingPositions.SetData(emittingPositionsBuffer); //Set the data on the texture
animationEffect.Parameters["emittersMap"].SetValue(emittingPositions); //Tell the shader about the texture data
//go on to do the actual drawing calls to use the pixel shader
问题是,当我这样做时,我得到一个异常:
“当资源在 GraphicsDevice 上主动设置时,您不能对资源调用 SetData。在调用 SetData 之前从设备中取消设置它。”
如何“从设备中取消设置”?或者我应该在这里采取不同的方法?
I need to communicate some constantly changing data to my pixel shader. I have a texture2d that I am passing to my pixel shader via a texture parameter. Before I call the shader I need to update the data in the texture.
emittingPositions.SetData(emittingPositionsBuffer); //Set the data on the texture
animationEffect.Parameters["emittersMap"].SetValue(emittingPositions); //Tell the shader about the texture data
//go on to do the actual drawing calls to use the pixel shader
The problem is that when I do this I get an exception:
"You may not call SetData on a resource while it is actively set on the GraphicsDevice. Unset it from the device before calling SetData."
How do I "unset it from the device"? Or should I be taking a different approach here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第一个纹理设置在 GraphicsDevice.Textures 数组中,索引为 0。
因此您必须执行以下操作:
The first texture is set in the GraphicsDevice.Textures array with the index 0.
so you have to do this: