今日は前々回作成したウィンドウをフルスクリーンにします。
ソースコードのどこをいじればフルスクリーンになるか考えます。
#![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_subsystemsdl_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のタイトル名も変えておきました)
今日は以上です!