我使用go-sdl2和go-gl,我试图从sdl曲面创建gl纹理.在C语言中,我会调用glTexImage2D
,最后一个参数是surface->pixels
.然而,在go-sdl
中,pixels
是一个private field,Pixels()
(我应该用它来访问)返回[]byte
,这与期望最后一个参数是unsafe.Pointer
的gl.TexImage2D
不兼容.
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())
无法使用图像.Pixels()(类型[]byte的值)作为类型不安全.指向gl的参数中的指针.TexImage2D
那么,在go中从sdl曲面创建gl纹理的正确方法是什么?