我正在嘗試用 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 關注
- 284 瀏覽
添加回答
舉報
0/150
提交
取消