Что означает WindowCreationError «Не удалось создать входной контекст» с libEGL и ggez? - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь запрограммировать игру на Rust, работая над учебником ggez . Вот мой код (src / main.rs):

use ggez::*;

// game state information goes here
struct State {}

/* Context connects all of the low-level bits for us; GameResult
   tells us if our game is borken */
impl ggez::event::EventHandler for State {
    fn update(&mut self, ctx: &mut Context) -> GameResult<()> {
        Ok(())
    }

    fn draw(&mut self, ctx: &mut Context) -> GameResult<()> {
        Ok(())
    }
}

fn main() {
    let state = &mut State { };
    println!("Hello, world!");
    let c = conf::Conf::new();
    let (ref mut ctx, ref mut event_loop) = ContextBuilder::new("ggez-0", "My Name")
        .conf(c)
        .build()
        .unwrap();
    event::run(ctx, event_loop, state).unwrap();
}

Я ожидаю, что компилятор будет иметь следующий вывод:

   Compiling ggez-0 v0.1.0 (/home/public/devel/rust/ggez-0)
warning: unused variable: `ctx`
 --> src/main.rs:9:26
  |
9 |     fn update(&mut self, ctx: &mut Context) -> GameResult<()> {
  |                          ^^^ help: consider prefixing with an underscore: `_ctx`
  |
  = note: #[warn(unused_variables)] on by default

warning: unused variable: `ctx`
  --> src/main.rs:13:24
   |
13 |     fn draw(&mut self, ctx: &mut Context) -> GameResult<()> {
   |                        ^^^ help: consider prefixing with an underscore: `_ctx`

    Finished dev [unoptimized + debuginfo] target(s) in 17.55s
     Running `target/debug/ggez-0`
Hello, world!

с небольшим окном GUI.

Однако, когда я запускаю код, я получаю такой вывод:

   Compiling ggez-0 v0.1.0 (/home/public/devel/rust/ggez-0)
warning: unused variable: `ctx`
 --> src/main.rs:9:26
  |
9 |     fn update(&mut self, ctx: &mut Context) -> GameResult<()> {
  |                          ^^^ help: consider prefixing with an underscore: `_ctx`
  |
  = note: #[warn(unused_variables)] on by default

warning: unused variable: `ctx`
  --> src/main.rs:13:24
   |
13 |     fn draw(&mut self, ctx: &mut Context) -> GameResult<()> {
   |                        ^^^ help: consider prefixing with an underscore: `_ctx`

    Finished dev [unoptimized + debuginfo] target(s) in 17.55s
     Running `target/debug/ggez-0`
Hello, world!
libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: WindowCreationError(Window(OsError("Failed to create input context: XError(XError { description: \"BadRequest (invalid request code or no such operation)\", error_code: 1, request_code: 155, minor_code: 1 })")))', src/libcore/result.rs:997:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

и без окна графического интерфейса. Поиск гугл буквального текста сообщения об ошибке не помог, и я не очень понимаю, о чем оно говорит. Что здесь происходит?

Я использую версию 1.34.0 компилятора Rust, работающего на Ubuntu 18.10 по SSH с опцией -XC, чтобы я мог получить GUI, и другие программы с графическим интерфейсом (такие как Firefox, Writer и т. Д.) Работают нормально для меня. Некоторые форумы рекомендовали использовать sudo apt install mesa-utils-extra для подобных проблем, но это ничего не изменило для меня.

1 Ответ

0 голосов
/ 09 мая 2019

Запуск sudo apt-get install libglfw3-dev libgles2-mesa-dev freeglut3-dev и повторный запуск программы устранили проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...