mieki256's diary



2026/02/27(金) [n年前の日記]

#1 [golang] Go言語でスクリーンセーバを作れないか実験中。その2

Go言語(golang)でWindows用のスクリーンセーバを作れそうかどうか実験しているところ。環境は Windows11 x64 25H2 + Go 1.25.7 64bit。

フルスクリーン表示時の不具合について :

昨日の時点ではフルスクリーン表示になった時に表示が固まったり暗い画面しか出てこなかったりしたけれど、Ebitengine利用時に以下の対策を入れてみたら改善した…。ような気がする。

  • ebiten.SetFullscreen(true) を呼ばずにフルスクリーン表示するようにした。
  • OpenGLを利用するように強制した。os.Setenv("EBITENGINE_GRAPHICS_LIBRARY", "opengl") を追加。
  • テクスチャの解放をするようにした。
  • ebiten.SetWindowFloating(true) を呼ばないようにした。最前面表示を指定するAPIらしい。

この修正をしたら、10回ぐらいスクリーンセーバを起動させてもおかしな状態にはならなかった。どの修正が効いてくれたのか分からないけれど、それっぽく動いてるから、まあええやろ…。

Windows APIの操作 :

昨日の段階では golang.org/x/sys/windows だけを使って Windows API を操作していたのだけど。

_windows package - golang.org/x/sys/windows - Go Packages

ウインドウ生成その他をするために API の定義をしないといけなくて、このあたり何かしらのライブラリでまとめてあったりしないのかなと思えてきた。

AI(Google Gemini)に尋ねてみたらいくつかライブラリを提案されたけれど、github.com/lxn/win が良さそうだなと…。

_win package - github.com/lxn/win - Go Packages
_lxn/win: A Windows API wrapper package for the Go Programming Language

"github.com/lxn/win" を import したら、win.* という記述でAPIや定数が利用できるようになった。大量に並んでいた独自定義部分をごっそり削除することができた。

以上です。

過去ログ表示

Prev - 2026/02 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project