在Rust中,在SDL2窗口中操作原始像素的最有效方法是什么?

在Rust中,在SDL2窗口中操作原始像素的最有效方法是什么?,rust,sdl,Rust,Sdl,我希望(在CPU上)有效地操纵SDL2窗口中显示的原始像素。在SDL2上有很多信息,但主要是C++,与锈绑定的关系并不总是清楚的。 我从窗口里发现,我能,哪能,谁的原始数据如预期。必须使用该纹理才能显示它 这是可行的,但似乎可以使用窗口的内容直接访问像素缓冲区并对其进行修改。是这样吗?这可能会快一点,并随窗口自动调整大小。其他一些答案让我相信a已经暴露了这些原始像素,但是 这些答案总是警告说,使用曲面是低效的——即使对于我的用例也是如此吗 我找不到如何获得正确的曲面。有Window的方法,但如果

我希望(在CPU上)有效地操纵SDL2窗口中显示的原始像素。在SDL2上有很多信息,但主要是C++,与锈绑定的关系并不总是清楚的。 我从窗口里发现,我能,哪能,谁的原始数据如预期。必须使用该纹理才能显示它

这是可行的,但似乎可以使用窗口的内容直接访问像素缓冲区并对其进行修改。是这样吗?这可能会快一点,并随窗口自动调整大小。其他一些答案让我相信a已经暴露了这些原始像素,但是

  • 这些答案总是警告说,使用曲面是低效的——即使对于我的用例也是如此吗
  • 我找不到如何获得正确的曲面。有Window的方法,但如果它包含对EventPump的引用,那么以后如何在主循环中使用EventPump

  • SDL2提供了两种相互排斥(即不能在同一窗口上同时使用)的方法来绘制窗口-SDL1.2样式窗口的
    SDL_曲面
    和新的硬件加速
    SDL_渲染器
    。无论使用何种方法,直接用自定义像素填充大图像都会很慢。虽然窗口表面包含要显示的像素,但仍然需要调用
    SDL\u UpdateWindowSurface
    。调整大小后,您将不得不获得新的窗口表面,因为旧的可能会被SDL破坏;调整大小后,没有关于其内容的承诺。很抱歉,我无法帮助您解决任何特定于生锈的问题。SDL2提供了两种相互排斥(即不能在同一窗口上同时使用)的方法来绘制到窗口中-SDL1.2样式的窗口的
    SDL_曲面
    和新的硬件加速
    SDL_渲染器
    。无论使用何种方法,直接用自定义像素填充大图像都会很慢。虽然窗口表面包含要显示的像素,但仍然需要调用
    SDL\u UpdateWindowSurface
    。调整大小后,您将不得不获得新的窗口表面,因为旧的可能会被SDL破坏;调整大小后,没有关于其内容的承诺。对不起,我帮不了你什么忙。