[英]OpenGL texture from SDL Surface in Go
我正在使用go-sdl2和go-gl ,我正在嘗試從 sdl 表面創建 gl 紋理。 在 CI 中,通過調用glTexImage2D
並使用surface->pixels
作為最后一個參數來做到這一點。 但是,在go-sdl
中, pixels
是一個私有字段,並且Pixels()
(我應該用來訪問它)返回[]byte
,這與期望最后一個參數unsafe.Pointer
的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())
不能在 gl.TexImage2D 的參數中使用 image.Pixels()([]byte 類型的值)作為 unsafe.Pointer 類型
那么在go中從sdl表面創建gl紋理的正確方法是什么?
事實證明,有Surface.Data函數返回實際指針。
gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, image.W, image.H, 0, gl.RGBA, gl.UNSIGNED_BYTE, image.Data())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.