douxihui8270 2018-03-28 18:51
浏览 127
已采纳

第一次运行后,go-sdl2不清除窗口表面

I just started going through the SDL tutorial lessons at http://lazyfoo.net/tutorials/SDL/index.php and am working on the first lesson (Lesson 01). I am hand-translating the C/C++ code to Go using the github.com/veandco/go-sdl2 library.

This is my code:

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)
}

The first time it ran, it drew a blank (white background) window, but every time after that, it has drawn a transparent window, showing the desktop windows that are running behind it.

I'm not sure what I am doing wrong.

I am running Go 1.10 on the KDE window manager on Ubuntu 17.10, if it makes any difference.

UPDATE

The problem is not occurring when I run XFCE instead of KDE.

  • 写回答

1条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 安装PyQt5的时候这里创建虚拟环境是哪里?具体是怎么的?能录个视频吗
      • ¥20 php程序设计题不会!求解答!
      • ¥15 vivado两个时钟TNS为负值
      • ¥50 关于#python#的问题,如何解决?
      • ¥15 关于git的一些问题
      • ¥15 有关python的问题
      • ¥15 vs2010 重新生成项目时显示Keycode不能为NULL
      • ¥15 用MATLAB解决问题,需要代码
      • ¥45 关于C语言设计井字棋游戏问题的实现
      • ¥20 vuforia的Unity3D开发,模型附上特效后大量报错