@ndesktop
Are you trying inside a VM?
No. It's on real hardware.
try to pass SDL_WINDOW_OPENGL as flag to SDL_CreateWindow.
I've test it on another machine that has Nvidia graphic driver. It works(the `renderer` isn't null anymore!). but i got a black screen.
The best would be to enumerate drivers with SDL_GetNumRenderDrivers and then get the capabilities for each with SDL_GetRenderDriverInfo, and check if there is support for acceleration by checking SDL_RendererInfo .flags & SDL_RENDERER_ACCELERATED.
Nice tip. I did it on my machine that has nvidia:
- Code: Select all
int drivers = SDL_GetNumRenderDrivers();
if (drivers) {
for (int i = 0; i < drivers; i++) {
SDL_RendererInfo info = {0};
if (SDL_GetRenderDriverInfo(i, &info) != 0) {
printf("Couldn't get RendererInfo: %s", SDL_GetError());
} else {
printf("SDL_Renderer: %s", info.name);
if (info.flags & SDL_RENDERER_SOFTWARE) {
printf("SDL_RENDERER_SOFTWARE");
}
if (info.flags & SDL_RENDERER_ACCELERATED) {
printf("SDL_RENDERER_ACCELERATED");
}
if (info.flags & SDL_RENDERER_PRESENTVSYNC) {
printf("SDL_RENDERER_PRESENTVSYNC");
}
if (info.flags & SDL_RENDERER_TARGETTEXTURE) {
printf("SDL_RENDERER_TARGETTEXTURE");
}
}
}
}
It returns 4 drivers:
1. direct3d
2. opengl
3. opengles2
4. software
All of them except `software`, support acceleration. As i said, if i pass
SDL_WINDOW_OPENGL to
SDL_CreateWindow, it won't be null, but i got a black screen.