gpt4 book ai didi

multithreading - “current vertex declaration does not include all the elements required”

转载 作者:行者123 更新时间:2023-12-03 13:20:59 25 4
gpt4 key购买 nike

“当前顶点声明不包括当前顶点着色器所需的所有元素。缺少TextureCoordinate0。”

当我尝试使用spriteFont在屏幕上的spriteBatch.End()行上绘制我的FPS时出现此错误。

我的效果甚至不使用纹理坐标。
但是我发现了问题的根源,而不是如何解决。
我有一个单独的线程来构建几何图形(LOD算法),这似乎就是我遇到问题的原因。
如果我将其设置为非线程,并且仅按每帧更新我的网格,则不会出错。
而且,如果我将其保留为多线程,但不要尝试在屏幕上绘制文本,它将可以正常工作。
我不能两者都做。

更奇怪的是,它实际上会编译并运行一小段时间。但是总是崩溃。
我在构建网格的方法中放置了Thread.Sleep,以使其发生的频率降低,并且我发现使该线程休眠的次数越多,调用该线程的次数越少,它在崩溃前平均运行的时间就越长。
如果它休眠1000毫秒,则可能会运行一分钟。如果它休眠10毫秒,则在崩溃前甚至不会显示一帧。这使我相信,这与在屏幕上绘制文本的同时在网格构建线程上执行的特定代码行有关。

似乎在绘制文本时可能必须锁定某些内容,但是我没有任何线索。
有任何想法吗?

最佳答案

我的信息来自GDC 2008的演示文稿“Understanding XNA Framework Performance”。它说:

  • GraphicsDevice is somewhat thread-safe
    • Cannot render from more than one thread at a time
    • Can create resources and SetData while another thread renders
  • ContentManager is not thread-safe
    • Ok to have multiple instances, but only one per thread


我的猜测是您正在某个地方违反这些规则之一。或者您正在修改一个缓冲区,该缓冲区用于在没有适当锁定的情况下进行渲染。

关于multithreading - “current vertex declaration does not include all the elements required”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11835785/

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