Go 中来自 SDL Surface 的 OpenGL 纹理

我正在使用go-sdl2go-gl,我正在尝试从 sdl 表面创建 gl 纹理。在 CI 中会通过调用glTexImage2Dwithsurface->pixels作为最后一个参数来做到这一点。go-sdl然而,Inpixels是一个私有字段并且Pixels()(我应该使用它来访问它)返回[]byte,这与gl.TexImage2D期望最后一个参数是unsafe.Pointer.


image, err := img.Load("img.png")

if err != nil {

    //...

}

var texture uint32

gl.GenTextures(1, &texture)

gl.BindTexture(gl.TEXTURE_2D, texture)

gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, image.W, image.H, 0, gl.RGBA, gl.UNSIGNED_BYTE, image.Pixels())

不能使用 image.Pixels()([]byte 类型的值)作为 gl.TexImage2D 参数中的类型 unsafe.Pointer


那么从 sdl 表面创建 gl 纹理的正确方法是什么?


开心每一天1111
浏览 86回答 1
1回答

幕布斯7119047

事实证明,有一个返回实际指针的Surface.Data函数。gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, image.W, image.H, 0, gl.RGBA, gl.UNSIGNED_BYTE, image.Data())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go