gpt4 book ai didi

c++ - SDL2 无法创建窗口,因为找不到匹配的 GLX 视觉对象

转载 作者:可可西里 更新时间:2023-11-01 17:44:30 30 4
gpt4 key购买 nike

我有一个问题,因为我目前在 Windows 10 上运行 Ubuntu 终端。我还安装了 XMing 作为我的 X 服务器(我将 XMing 用于 qemu 等...)。我正在尝试运行这个 SDL2 程序。所以我有这个用于 main.cpp:

#include <stdio.h> 
#include <stdlib.h>
#include <unistd.h>

#include <SDL2/SDL.h>
#include <GL/gl.h>

int main(int argc, char *argv[])
{
int final_status = 1;
SDL_Window *window;
SDL_GLContext openGL_context;

if (SDL_Init(SDL_INIT_VIDEO)) {
fprintf(stderr, "Unable to initialize SDL: %s\n",
SDL_GetError());
return 1;
}
window = SDL_CreateWindow("My Demo", SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, 640, 480,
SDL_WINDOW_OPENGL);
if (!window) {
fprintf(stderr, "Can't create window: %s\n", SDL_GetError());
goto finished;
}

openGL_context = SDL_GL_CreateContext(window);
if (!openGL_context) {
fprintf(stderr, "Can't create openGL context: %s\n",
SDL_GetError());
goto close_window;
}

/* drawing code removed */

final_status = 0;
SDL_GL_DeleteContext(openGL_context);
close_window:
SDL_DestroyWindow(window);
finished:
SDL_Quit();
fprintf(stdout, "done\n");
fflush(stdout);
return final_status;
}

然后当我运行 g++ main.cpp -lSDL2 时,我得到了这个输出:

Can't create window: Couldn't find matching GLX visual
done

我试图搜索如何解决这个 GLX 问题,但似乎找不到解决方案。将不胜感激!

最佳答案

通过运行 glxinfo 确保 GLX 已正确安装。在底部,您会找到支持的视觉效果列表。这是我的:

1 GLX Visuals
visual x bf lv rg d st colorbuffer sr ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a F gb bf th cl r g b a ns b eat
----------------------------------------------------------------------------
0x022 24 tc 0 24 0 r y . 8 8 8 0 . . 0 16 0 0 0 0 0 0 0 None

在运行 SDL2 程序之前尝试运行以下命令:

export SDL_VIDEO_X11_VISUALID=

这会导致 SDL 沿着不同的代码路径查找视觉对象。您还可以尝试将视觉硬编码为 glxinfo 中的视觉 id:

export SDL_VIDEO_X11_VISUALID=0x022

关于c++ - SDL2 无法创建窗口,因为找不到匹配的 GLX 视觉对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41338549/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com