go-sdl2 在第一个 运行 之后不清除 window 表面
go-sdl2 not clearing window surface after first run
我刚刚开始学习 http://lazyfoo.net/tutorials/SDL/index.php 的 SDL 教程课程,并且正在学习第一课(第 01 课)。我正在使用 github.com/veandco/go-sdl2
库手动 运行 将 C/C++ 代码转为 Go。
这是我的代码:
package main
import (
"github.com/veandco/go-sdl2/sdl"
)
const screenWidth, screenHeight = 800, 600
func main() {
defer sdl.Quit()
if err := sdl.Init(sdl.INIT_VIDEO); err != nil {
panic(err)
}
window, err := sdl.CreateWindow("SDL Tutorial",
int32(sdl.WINDOWPOS_UNDEFINED), int32(sdl.WINDOWPOS_UNDEFINED),
screenWidth, screenHeight, uint32(sdl.WINDOW_SHOWN))
if err != nil {
panic(err)
}
defer window.Destroy()
screenSurface, err := window.GetSurface()
if err != nil {
panic(err)
}
if err = screenSurface.FillRect(nil,
sdl.MapRGB(screenSurface.Format, 0xff, 0xff, 0xff)); err != nil {
panic(err)
}
if err = window.UpdateSurface(); err != nil {
panic(err)
}
sdl.Delay(2000)
}
第一次运行,它画了一个空白(白色背景)window,但之后每次,它都画了一个t运行sparent window ,显示 windows 桌面 运行ning 在它后面。
我不确定我做错了什么。
我 运行在 Ubuntu 17.10 的 KDE window 管理器上 运行ning Go 1.10,如果有什么不同的话。
更新
当我 运行 XFCE 而不是 KDE 时,不会 出现问题。
添加事件循环并无条件地或在 window 经理 (SDL_WINDOWEVENT
) 要求时重绘。你不能只画一次就期望东西留在屏幕上,甚至永远可见(例如,你的画发生在 window 经理准备好展示你的 window 之前),尤其是合成 window 经理。
我刚刚开始学习 http://lazyfoo.net/tutorials/SDL/index.php 的 SDL 教程课程,并且正在学习第一课(第 01 课)。我正在使用 github.com/veandco/go-sdl2
库手动 运行 将 C/C++ 代码转为 Go。
这是我的代码:
package main
import (
"github.com/veandco/go-sdl2/sdl"
)
const screenWidth, screenHeight = 800, 600
func main() {
defer sdl.Quit()
if err := sdl.Init(sdl.INIT_VIDEO); err != nil {
panic(err)
}
window, err := sdl.CreateWindow("SDL Tutorial",
int32(sdl.WINDOWPOS_UNDEFINED), int32(sdl.WINDOWPOS_UNDEFINED),
screenWidth, screenHeight, uint32(sdl.WINDOW_SHOWN))
if err != nil {
panic(err)
}
defer window.Destroy()
screenSurface, err := window.GetSurface()
if err != nil {
panic(err)
}
if err = screenSurface.FillRect(nil,
sdl.MapRGB(screenSurface.Format, 0xff, 0xff, 0xff)); err != nil {
panic(err)
}
if err = window.UpdateSurface(); err != nil {
panic(err)
}
sdl.Delay(2000)
}
第一次运行,它画了一个空白(白色背景)window,但之后每次,它都画了一个t运行sparent window ,显示 windows 桌面 运行ning 在它后面。
我不确定我做错了什么。
我 运行在 Ubuntu 17.10 的 KDE window 管理器上 运行ning Go 1.10,如果有什么不同的话。
更新
当我 运行 XFCE 而不是 KDE 时,不会 出现问题。
添加事件循环并无条件地或在 window 经理 (SDL_WINDOWEVENT
) 要求时重绘。你不能只画一次就期望东西留在屏幕上,甚至永远可见(例如,你的画发生在 window 经理准备好展示你的 window 之前),尤其是合成 window 经理。