我正在使用go-sdl2和go-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 uint32gl.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 纹理的正确方法是什么?
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
事实证明,有一个返回实际指针的Surface.Data函数。
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, image.W, image.H, 0, gl.RGBA, gl.UNSIGNED_BYTE, image.Data())
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消