2013-09-23 70 views
1

我想在MacOS上使用Go編寫OpenGL應用程序,並且無法弄清楚如何創建高於的OpenGL 2.1如何在MacOS上使用Go創建OpenGL 3.2上下文(Lion-10.8)

我一直使用多個OpenGL的綁定,在那裏嘗試過,但例如將輸出2.1 NVIDIA-8.12.47 310.40.00.05f01下方github.com/go-gl/gl

的解決。我需要做什麼來創建一個OpenGL 3.2上下文?

package main 

import (
    "fmt" 
    "github.com/go-gl/gl" 
    glfw "github.com/go-gl/glfw3" 
) 
func main() { 
    //request 3.2 context 
    glfw.WindowHint(glfw.ContextVersionMajor, 3) 
    glfw.WindowHint(glfw.ContextVersionMinor, 2) 
    glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile) 
    if !glfw.Init() { 
     panic("glfw init failed") 
    } 
    defer glfw.Terminate() 

    //create and set window context 
    window, err := glfw.CreateWindow(64, 64, "foo", nil, nil) 
    if err != nil { 
     panic(err) 
    } 
    window.MakeContextCurrent() 

    //check version 
    version := gl.GetString(gl.VERSION) 
    fmt.Println(version) 
} 

回答

3

由於這是一個C庫包裝,你可能還需要相當於:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

在OS X但是,更重要的是,你應該叫glfwInit(或同類glfw.Init )之前致電任何其他 GLFW3功能。 AFAIK,只有glfwSetErrorCallback可以在此通話之前使用。

+0

完美運作。出於某種原因,我認爲'Init'需要知道所需的上下文版本。 – Akusete

相關問題