首页 > 解决方案 > 带有 WSL2 的 SDL2 中的 BadRequest

问题描述

在这个最小的例子中,我有一个BadRequest错误:

#include <SDL.h>

int main( int argc, char* args[] )
{
    if(SDL_Init(SDL_INIT_VIDEO) < 0) abort();

    SDL_Window *window = SDL_CreateWindow(
        "An SDL2 window",
        SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED,
        640,
        480,
        SDL_WINDOW_OPENGL
    );
    if(window == NULL) abort();

    SDL_Renderer* renderer = SDL_CreateRenderer(
        window,
        -1,
        SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC
    );
    if(renderer == NULL) abort();

    SDL_Delay(3000);

    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
}

错误如下

$ g++ $(sdl2-config --cflags) foo.cpp $(sdl2-config --libs)
$ ./a.out
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  149 (GLX)
  Minor opcode of failed request:  16 (X_GLXVendorPrivate)
  Serial number of failed request:  197
  Current serial number in output stream:  198

似乎问题出现在SDL_CreateRenderer功能上。创建窗口可以确认我的 X 服务器也可以正常工作。

标签: c++sdlsdl-2windows-subsystem-for-linuxwsl-2

解决方案


推荐阅读