我正在尝试用 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))产出0x4708ae050输出可能是一个 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)
1 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
您链接的包提供了一个可以解决问题的函数GoStringUb
:
render := gl.GoStringUb(gl.GetString(gl.RENDERER)) version := gl.GoStringUb(gl.GetString(gl.VERSION))
- 1 回答
- 0 关注
- 260 浏览
添加回答
举报
0/150
提交
取消