今日は前々回作成したウィンドウをフルスクリーンにします。
ソースコードのどこをいじればフルスクリーンになるか考えます。
#![windows_subsystem = "windows"] extern crate sdl2; extern crate gl; use sdl2::event::Event; use sdl2::keyboard::Keycode; use sdl2::video::GLProfile; fn main() { let sdl_context = sdl2::init().unwrap(); let video_subsystem = sdl_context.video().unwrap(); let gl_attr = video_subsystem.gl_attr(); gl_attr.set_context_profile(GLProfile::Core); gl_attr.set_context_version(3, 3); let window = video_subsystem.window("Window", 800, 600) .opengl() .build() .unwrap(); // Unlike the other example above, nobody created a context for your window, so you need to create one. let ctx = window.gl_create_context().unwrap(); gl::load_with(|name| video_subsystem.gl_get_proc_address(name) as *const _); debug_assert_eq!(gl_attr.context_profile(), GLProfile::Core); debug_assert_eq!(gl_attr.context_version(), (3, 3)); let mut event_pump = sdl_context.event_pump().unwrap(); 'running: loop { unsafe { gl::ClearColor(0.6, 0.0, 0.8, 1.0); gl::Clear(gl::COLOR_BUFFER_BIT); } window.gl_swap_window(); for event in event_pump.poll_iter() { match event { Event::Quit {..} | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => { break 'running }, _ => {} } } ::std::thread::sleep(::std::time::Duration::new(0, 1_000_000_000u32 / 60)); } }
次の行が怪しそうです。
let window = video_subsystem.window("Window", 800, 600)
変数はvideo_subsystem
sdl_context
変数から生成されており、sdl_context
変数はsdl2::init().unwrap()
で生成されています。sdl2のcrateのマニュアルを見てみます。
ソースコード上でsdl2::init()
してから、sdl_context.video()
としているので、videoモジュールのリンクをクリックしてみます。
すると、Structの中の
WindowBuilder | The type that allows you to build windows. |
が怪しそうなので、WindowBuilderをクリックします。
すると、fullscreen_desktopというメソッドがありました。これを使ってみます。
・・・成功しました!(私のデスクトップ上で)
‹‹( ´ω`)/››
皆さんも成功したでしょうか?
成功したらVSCode上でcommit & pushしてソースをアップしてください。うまくいったでしょうか?
(ついでにWindowのタイトル名も変えておきました)
今日は以上です!