我已经使用C ++和SDL2编写了一个程序:
如果使用SDL_RENDERER_SOFTWARE标志创建渲染器,则该程序可以完美运行。
如果使用该SDL_RENDERER_ACCELERATED标志创建了渲染器,我发现虽然可以直接渲染到屏幕,但是如果我从窗口表面创建了几个不同的纹理,然后尝试使用SDL_RenderCopy();将它们复制回窗口。我所看到的只是一个黑色的窗户。
我找不到任何失败的SDL调用。
我想知道纹理格式和渲染器之间是否可能不兼容-但我不确定如何跟进。
有什么帮助或建议吗?
我的环境是:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
附加信息和源代码:
我添加了缩减的源代码来演示以下问题。
注意,为了减小大小,我删除了所有错误检查,并将相关代码合并为一个主要函数。
我得到的是,如果我取消注释第40行,那么该程序将按预期运行,从而使我SDL_CreateRenderer使用该SDL_RENDERER_SOFTWARE标志进行调用。
如果我取消对其他任何SDL_CreateRenderer一行的注释(第41-43行:使用硬件加速),则在最初将它们渲染到屏幕上时会看到红色和蓝色方块。
但是,当我按下按键时,不是看着窗口在红色和蓝色方块之间滑动,而是看着黑色的窗口。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <SDL.h>
#include <SDL_image.h>
#include <stdio.h>
#include <string>
//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char* args[])
{
//The window we'll be rendering to
SDL_Window* gWindow = …Run Code Online (Sandbox Code Playgroud)