【问题标题】:SDL_LockTexture returning black pixelsSDL_LockTexture 返回黑色像素
【发布时间】:2020-12-07 16:10:50
【问题描述】:

我目前正在关注 LazyFoo 的 SDL 教程,我已经达到了 Texture Manipulation 部分,但我遇到了问题。我第一次调用 SDL_LockTexture 时,它​​可以很好地更新纹理。但是,在 SDL_UnlockTexture 之后,如果我再次尝试锁定纹理,它现在会返回一个指向一组零像素的指针,而不是上次解锁后设置的指针。

    SDL_LockTexture(newTexture, NULL, &pixels, &pitch);
    memcpy(pixels, formattedSurface->pixels, formattedSurface->pitch * formattedSurface->h);

    SDL_UnlockTexture(newTexture);
    pixels = NULL;

这是将加载表面的像素复制到空纹理的初始代码,如果此时渲染,它会显示正确的图像。

但是,如果纹理被锁定并再次解锁,则显示的图像是一个黑框(每个像素的值为0)

我完全被难住了。如果需要更多信息,请告诉我。

【问题讨论】:

    标签: c++ graphics sdl


    【解决方案1】:

    正如 wiki here 中所述,SDL_LockTexture 提供的像素数据仅用于将数据写入纹理。它实际上可能不包含该纹理的当前数据。如果您需要纹理像素数据的副本,则需要将其保存在其他地方。

    【讨论】:

    • 是的,我在发布问题后偶然发现了这个文字时刻。不过感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多