第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 SDL Go 程序中復(fù)制紋理時(shí)的運(yùn)行時(shí)恐慌

在 SDL Go 程序中復(fù)制紋理時(shí)的運(yùn)行時(shí)恐慌

Go
不負(fù)相思意 2021-08-10 15:29:27
我有一個(gè) SDL2 go 程序,它試圖將像素陣列寫入屏幕。當(dāng)我嘗試使用新像素更新紋理時(shí),程序會(huì)因運(yùn)行時(shí)錯(cuò)誤而恐慌:fatal error: unexpected signal during runtime execution不幸的是,我?guī)缀跽也坏疥P(guān)于如何在 Go 中傳遞不安全指針的文檔,我不確定我是否正確地處理了這個(gè)問題,下面是一些展示問題的示例代碼:func main() {    window := sdl.CreateWindow("test", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,        800, 600, sdl.WINDOW_SHOWN)    renderer := sdl.CreateRenderer(window, -1, 0)    texture := sdl.CreateTexture(renderer, sdl.PIXELFORMAT_ARGB8888,        sdl.TEXTUREACCESS_STATIC, 800, 600)    defer renderer.Destroy()    defer texture.Destroy()    defer window.Destroy()    for {        pixels := make([]uint32, 800*600)        texture.Update(nil, unsafe.Pointer(&pixels), int(800*unsafe.Sizeof(pixels)))        window.UpdateSurface()        renderer.Clear()        renderer.Copy(texture, nil, nil)        renderer.Present()    }    sdl.Delay(1000)    sdl.Quit()}這段代碼編譯時(shí)不會(huì)出錯(cuò),但運(yùn)行時(shí)會(huì)產(chǎn)生運(yùn)行時(shí)恐慌,但我看不出這段代碼中是什么導(dǎo)致了這種情況。我正在使用這些 SDL2 Go 綁定:https : //github.com/veandco/go-sdl2
查看完整描述

1 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊

間距參數(shù)期望表面的寬度 * sizeof(int32) 盡我所能,此代碼有效并在每個(gè)循環(huán)中打印隨機(jī)像素:


func main() {

    window, err := sdl.CreateWindow("test", sdl.WINDOWPOS_UNDEFINED,

        sdl.WINDOWPOS_UNDEFINED, 800, 600, sdl.WINDOW_SHOWN)

    if err != nil {

        log.Fatal(err)

    }

    defer window.Destroy()


    renderer, err := sdl.CreateRenderer(window, -1, 0)

    if err != nil {

        log.Fatal(err)

    }

    defer renderer.Destroy()


    texture, err := renderer.CreateTexture(sdl.PIXELFORMAT_ARGB8888,

        sdl.TEXTUREACCESS_STATIC, 800, 600)


    if err != nil {

        log.Fatal(err)

    }

    defer texture.Destroy()


    pixels := make([]uint32, 800*600)

L:

    for {

        for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {

            if _, ok := event.(*sdl.QuitEvent); ok {

                break L

            }

        }

        for i := range pixels {

            pixels[i] = 0x00777777 + uint32(rand.Intn(0x00AAAAAA))

        }

        //4 == sizeof(int32), unsafe.Sizeof(pixels) returns the actual size of

        //the slice header which is 24

        texture.Update(nil, unsafe.Pointer(&pixels[0]), 800*4)

        window.UpdateSurface()


        renderer.Clear()

        renderer.Copy(texture, nil, nil)

        renderer.Present()

    }


    sdl.Delay(1000)

    sdl.Quit()

}

//編輯它應(yīng)該unsafe.Pointer(&pixels[0])不是unsafe.Pointer(&pixels)。


查看完整回答
反對 回復(fù) 2021-08-10
  • 1 回答
  • 0 關(guān)注
  • 226 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)