c++ - 纹理不渲染

标签 c++ sdl sdl-2

我有以下代码,其中我试图首先渲染背景,然后在它们之上渲染一些项目。唯一出来的是背景。​​


Textures 是我创建的一个类的 vector ,它基本上只包含一个 SDL_Texture* 和一个 SDL_Rect*。纹理不是 NULL,SDL_Rect 定位在屏幕上,我不确定它们为什么不显示。

//Clear screen
SDL_RenderClear(renderer);

SDL_RenderCopy(renderer, background, NULL, NULL); //Render background

for (auto texture : textures) {
    if (texture.getXPos() && texture.getYPos()) { //Position, if applicable
        SDL_RenderCopy(renderer, texture.getTexture(), NULL, texture.getRect());
    }
    else {
        SDL_RenderCopy(renderer, texture.getTexture(), NULL, NULL);
    }
}

//Update screen
SDL_RenderPresent(renderer);

最佳答案

愚蠢的错误:当我使用 SDL_Surface 时,我会将 SDL_Rect 的 w 和 h 设置为 0,这显然不是它应该如何与 SDL_Texture

关于c++ - 纹理不渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745502/

相关文章:

c++ - ncurses + SLD2和SDL2_Mixer:尝试播放mp3时无声音

c++ - 如何将 SDL_renderer 转换为 SDL_window?

javascript - SDL2 - RenderPresent 随机占用 20-30+ms(在 Node.JS FFI 调用中)

c++ - 并行线程同步

c++ - 使用我自己的 list.sort() 逻辑,试图模拟其他来源,为什么我会收到看似正确格式的错误?

c++ - SDL 不绘制图像

c++ - 将 SDL2 与 g++/MinGW 一起使用会在启动时崩溃

c++ - 数据类型调用模板方法

c++ - 文本输出发送到文件并稍后在程序中使用。如何使用缓冲区代替?

c++ - 在 macOS 上编译 C++ SDL