我正在尝试用 Go 编写一个简单的 OpenGL 应用程序,并想从驱动程序中读取 OpenGL 版本。我正在使用这个功能:
http://godoc.org/github.com/chsc/gogl/gl21#GetString
这是一个包装函数
const GLubyte* glGetString( GLenum name);
这段代码:
fmt.Println(gl.GetString(gl.RENDERER))
fmt.Println(*gl.GetString(gl.VERSION))
产出
0x4708ae0
50
输出可能是一个 C 类型的字符串,指向字符串第一个字节的指针。如何将 GetString 函数的输出转换为普通的 go 字符串?
解决方案:
该包提供了正确的转换器功能,只是不是很明显:
fmt.Println( gl.GoStringUb( gl.GetString( gl.RENDERER )))
一般方法:(如果包不提供 *Ubyte 到字符串转换功能)
pointer := unsafe.Pointer(gl.GetString(gl.RENDERER))
str := C.GoString( (*C.char)(pointer) )
fmt.Println(str)
繁花如伊
相关分类