我正在使用go-sdl2和go-gl,我试图从sdl表面创建一个gl纹理。在C中,我会通过调用surface->pixels
作为最后一个参数来实现这一点。然而,在go-sdl
中,pixels
是一个私有字段,而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的值)用作类型unsafe。gl.TexImage2D的参数中的指针
那么在go中从sdl表面创建gl纹理的正确方法是什么呢?
1条答案
按热度按时间yws3nbqq1#
事实证明,有一个Surface.data函数返回实际的指针。