本文整理汇总了Golang中github.com/go-gl/glfw3.WindowHint函数的典型用法代码示例。如果您正苦于以下问题:Golang WindowHint函数的具体用法?Golang WindowHint怎么用?Golang WindowHint使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了WindowHint函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: main
func main() {
glfw.SetErrorCallback(glfwErrorCallback)
if !glfw.Init() {
panic("failed to initialize glfw")
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.False)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
window, err := glfw.CreateWindow(800, 600, "Cube", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
texture = newTexture("square.png")
defer gl.DeleteTextures(1, &texture)
setupScene()
for !window.ShouldClose() {
drawScene()
window.SwapBuffers()
glfw.PollEvents()
}
}
示例2: main
func main() {
runtime.LockOSThread()
if !glfw.Init() {
fmt.Fprintf(os.Stderr, "Can't open GLFW")
return
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Samples, 4)
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 3)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
glfw.WindowHint(glfw.OpenglForwardCompatible, glfw.True) // needed for macs
window, err := glfw.CreateWindow(1024, 768, "Tutorial 1", nil, nil)
if err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
return
}
window.MakeContextCurrent()
gl.Init()
gl.GetError() // Ignore error
window.SetInputMode(glfw.StickyKeys, 1)
gl.ClearColor(0., 0., 0.4, 0.)
// Equivalent to a do... while
for ok := true; ok; ok = (window.GetKey(glfw.KeyEscape) != glfw.Press && !window.ShouldClose()) {
window.SwapBuffers()
glfw.PollEvents()
}
}
示例3: RunIn3DContext
func RunIn3DContext(example func()) {
if !glfw.Init() {
log.Panic("glfw Error")
}
defer glfw.Terminate()
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 3)
glfw.WindowHint(glfw.OpenglForwardCompatible, glfw.True)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
w, h := 100, 100
window, err := glfw.CreateWindow(w, h, "Test", nil, nil)
if err != nil {
log.Panic(err)
}
window.MakeContextCurrent()
if gl.Init() != 0 {
log.Panic("gl error")
}
gl.GetError()
vertexArray := gl.GenVertexArray()
vertexArray.Bind()
example()
}
示例4: Initialize
// Initialize creates new window
func (e *E) Initialize(title string, params Params, state State) error {
if !glfw3.Init() {
return fmt.Errorf("unable to initialize glfw")
}
if e.window != nil {
return fmt.Errorf("Initialize error: window is not nil")
}
glfw3.SetErrorCallback(OnError)
glfw3.WindowHint(glfw3.Resizable, glfw3.True)
glfw3.WindowHint(glfw3.ContextVersionMajor, params.Version[0])
glfw3.WindowHint(glfw3.ContextVersionMinor, params.Version[1])
glfw3.WindowHint(glfw3.OpenglProfile, glfw3.OpenglCoreProfile)
glfw3.WindowHint(glfw3.OpenglDebugContext, glfw3.True)
size := params.Size
window, err := glfw3.CreateWindow(size[0], size[1], title, nil, nil)
if err != nil {
return err
}
window.MakeContextCurrent()
window.SetKeyCallback(e.OnKey)
window.SetFramebufferSizeCallback(e.OnFramebufferResize)
e.window = window
e.state = state
return nil
}
示例5: main
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
defer glfw.Terminate()
gorgasm.Verbose = true
if !glfw.Init() {
panic("Can't init glfw!")
}
// Enable OpenGL ES 2.0.
glfw.WindowHint(glfw.ClientApi, glfw.OpenglEsApi)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
window, err := glfw.CreateWindow(testlib.Width, testlib.Height, "Gorgasm Test", nil, nil)
if err != nil {
panic(err)
}
gorgasm.Init(window)
go prettytest.Run(new(testing.T), testlib.NewTestSuite())
for !window.ShouldClose() {
glfw.WaitEvents()
}
}
示例6: main
func main() {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
defer glfw.Terminate()
mandala.Verbose = true
if !glfw.Init() {
panic("Can't init glfw!")
}
// Enable OpenGL ES 2.0.
glfw.WindowHint(glfw.ClientApi, glfw.OpenglEsApi)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
window, err := glfw.CreateWindow(Width, Height, "gltext black-box testing", nil, nil)
if err != nil {
panic(err)
}
glfw.SwapInterval(0)
mandala.Init(window)
go prettytest.Run(new(testing.T), testlib.NewTestSuite(outputPath))
for !window.ShouldClose() {
glfw.WaitEvents()
}
}
示例7: setupGlfw
func setupGlfw() {
glfw.SetErrorCallback(onGlfwError)
glfw.WindowHint(glfw.Resizable, 1)
glfw.WindowHint(glfw.Visible, 1)
glfw.WindowHint(glfw.Decorated, 1)
glfw.WindowHint(glfw.ClientApi, glfw.OpenglApi)
glfw.WindowHint(glfw.OpenglForwardCompatible, 1)
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 2)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
glfw.WindowHint(glfw.OpenglDebugContext, 1)
}
示例8: initWindow
func initWindow() (window *glfw.Window, err error) {
monitor, err := glfw.GetPrimaryMonitor()
if err != nil {
return nil, err
}
videomode, err := monitor.GetVideoMode()
if err != nil {
return nil, err
}
if videomode.Height < 480 || videomode.Width < 640 {
return nil, errors.New("unsupported resolution!")
}
ratio := float64(videomode.Width) / float64(videomode.Height)
if fullscreen {
glfw.WindowHint(glfw.Decorated, 0)
window, err = glfw.CreateWindow(videomode.Width, videomode.Height, "Golang Asteroids!", nil, nil)
if err != nil {
return nil, err
}
window.SetPosition(0, 0)
} else {
glfw.WindowHint(glfw.Decorated, 1)
window, err = glfw.CreateWindow(int(ratio*480), 480, "Golang Asteroids!", nil, nil)
if err != nil {
return nil, err
}
window.SetPosition(videomode.Width/2-320, videomode.Height/2-240)
}
window.SetKeyCallback(keyCallback)
window.SetFramebufferSizeCallback(reshapeWindow)
window.MakeContextCurrent()
gl.Init()
gl.ClearColor(gl.GLclampf(Colorize(0)), gl.GLclampf(Colorize(0)), gl.GLclampf(Colorize(0)), 0.0)
gl.Clear(gl.COLOR_BUFFER_BIT)
width, height := window.GetFramebufferSize()
reshapeWindow(window, width, height)
return window, nil
}
示例9: main
func main() {
flag.Parse()
glfw.SetErrorCallback(errorCallback)
if !glfw.Init() {
println("glfw init failure")
}
defer glfw.Terminate()
glfw.WindowHint(glfw.ClientApi, glfw.OpenglEsApi)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
glfw.WindowHint(glfw.ContextVersionMinor, 0)
window, err := glfw.CreateWindow(Width, Height, Title, nil, nil)
if err != nil {
panic(err)
}
defer window.Destroy()
window.MakeContextCurrent()
glfw.SwapInterval(1)
window.SetSizeCallback(reshape)
window.SetKeyCallback(keyEvent)
gl.Viewport(0, 0, Width, Height)
initScene()
if *debug {
go func() {
tick := time.Tick(1 * time.Second)
for {
<-tick
fmt.Printf("FPS:%v\tGOROUTINE:%v\r", atomic.LoadUint64(fps), runtime.NumGoroutine())
atomic.StoreUint64(fps, 0)
}
}()
}
for !window.ShouldClose() {
drawScene()
window.SwapBuffers()
glfw.PollEvents()
atomic.AddUint64(fps, 1)
}
}
示例10: Open
func (self *OpenGLWindow) Open() {
var err error
if !glfw.Init() {
panic(errors.New("Unable to initialize GLFW"))
}
glfw.SetErrorCallback(func(code glfw.ErrorCode, desc string) {
log.Printf("[GLFW Error] (%d) %s", code, desc)
})
var monitor *glfw.Monitor
if self.config.Fullscreen {
monitor, err = glfw.GetPrimaryMonitor()
if err != nil {
panic(err)
}
}
glfw.WindowHint(glfw.ContextVersionMajor, 4)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
glfw.WindowHint(glfw.OpenglForwardCompatible, glfw.True)
// Default buffer sizes
glfw.WindowHint(glfw.DepthBits, 32)
glfw.WindowHint(glfw.StencilBits, 0)
// Toggle VSync. Turning VSync off aparently doesn't work via glfw through
// some ATI cards and drivers
if self.config.VSync {
glfw.SwapInterval(1)
} else {
glfw.SwapInterval(0)
}
self.window, err = glfw.CreateWindow(
int(self.config.Width), int(self.config.Height),
"Project Slartibartfast",
monitor,
nil)
if err != nil {
panic(err)
}
self.window.MakeContextCurrent()
if glewError := gl.Init(); glewError != 0 {
panic(errors.New("Unable to initialize OpenGL"))
}
}
示例11: init
func (a *Application) init() {
glfw.SetErrorCallback(a.glfwError)
if !glfw.Init() {
os.Exit(1)
}
a.Width = 1280
a.Height = 720
a.Title = filepath.Base(os.Args[0])
// For now, force a fixed size window. bgfx currently breaks glfw
// events on OS X because it overrides the NSWindow's content view.
glfw.WindowHint(glfw.Resizable, 0)
var err error
a.window, err = glfw.CreateWindow(a.Width, a.Height, a.Title, nil, nil)
if err != nil {
log.Fatalln(err)
}
bgfx_glfw.SetWindow(a.window)
}
示例12: main
func main() {
if !glfw.Init() {
panic("Failed to initialize GLFW")
}
defer glfw.Terminate()
glfw.WindowHint(glfw.DepthBits, 16)
window, err := glfw.CreateWindow(300, 300, "Gears", nil, nil)
if err != nil {
panic(err)
}
// Set callback functions
window.SetFramebufferSizeCallback(reshape)
window.SetKeyCallback(key)
window.MakeContextCurrent()
glfw.SwapInterval(1)
width, height := window.GetFramebufferSize()
reshape(window, width, height)
// Parse command-line options
Init()
// Main loop
for !window.ShouldClose() {
// Draw gears
draw()
// Update animation
animate()
// Swap buffers
window.SwapBuffers()
glfw.PollEvents()
}
}
示例13: main
func main() {
glfw.SetErrorCallback(errorCallback)
if !glfw.Init() {
panic("Can't init glfw!")
}
defer glfw.Terminate()
glfw.WindowHint(glfw.DepthBits, 16)
window, err := glfw.CreateWindow(Width, Height, Title, nil, nil)
if err != nil {
panic(err)
}
window.SetFramebufferSizeCallback(reshape)
window.SetKeyCallback(key)
window.MakeContextCurrent()
glfw.SwapInterval(1000 / 60)
width, height := window.GetFramebufferSize()
reshape(window, width, height)
if err := initGL(); err != nil {
fmt.Fprintf(os.Stderr, "init: %s\n", err)
return
}
defer destroyGL()
for !window.ShouldClose() {
drawScene()
window.SwapBuffers()
glfw.PollEvents()
}
}
示例14: CreateWindow
func CreateWindow(width, height int, name string, fullscreen bool, delegate WindowDelegate, legacy bool) error {
if !glfw.Init() {
return errors.New("Failed to initialize GLFW")
}
defer glfw.Terminate()
glfw.WindowHint(glfw.DepthBits, 16)
if !legacy {
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 2)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
glfw.WindowHint(glfw.OpenglForwardCompatible, 1)
}
var monitor *glfw.Monitor = nil
var err error = nil
if fullscreen {
monitor, err = glfw.GetPrimaryMonitor()
if err != nil {
return err
}
vidModes, _ := monitor.GetVideoModes()
maxResolution := vidModes[len(vidModes)-1]
width = maxResolution.Width
height = maxResolution.Height
}
window, err := glfw.CreateWindow(width, height, name, monitor, nil)
if err != nil {
return err
}
if fullscreen {
window.SetInputMode(glfw.Cursor, glfw.CursorDisabled)
}
start := time.Now()
last := start
doSimulation := func() {
now := time.Now()
gameTime := GameTime{
now,
now.Sub(start),
now.Sub(last),
}
delegate.Simulate(gameTime)
last = now
}
bindEvents(window, &IdleSimulatorWindowDelegator{
WindowDelegator{delegate},
doSimulation,
})
window.MakeContextCurrent()
glfw.SwapInterval(1)
delegate.Init(window)
frameWidth, frameHeight := window.GetFramebufferSize()
delegate.Reshape(window, frameWidth, frameHeight)
for !window.ShouldClose() {
doSimulation()
if delegate.NeedsRender() {
delegate.Draw(window)
}
window.SwapBuffers()
if delegate.IsIdle() {
glfw.WaitEvents()
} else {
glfw.PollEvents()
}
}
return nil
}
示例15: main
func main() {
var programState programState
var err error
glfw.SetErrorCallback(errorCallback)
if !glfw.Init() {
panic("GLFW initialization failed.")
}
defer glfw.Terminate()
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 3)
glfw.WindowHint(glfw.SrgbCapable, glfw.True)
glfw.WindowHint(glfw.Resizable, glfw.False)
programState.Gl.Window, err = glfw.CreateWindow(640, 480, "Daggor", nil, nil)
if err != nil {
panic(err)
}
defer programState.Gl.Window.Destroy()
programState.Gl.glfwKeyEventList = makeGlfwKeyEventList()
programState.Gl.Window.SetKeyCallback(programState.Gl.glfwKeyEventList.Callback)
programState.Gl.Window.MakeContextCurrent()
if ec := gl.Init(); ec != 0 {
panic(fmt.Sprintf("OpenGL initialization failed with code %v.", ec))
}
// For some reason, here, the OpenGL error flag for me contains "Invalid enum".
// This is weird since I have not done anything yet. I imagine that something
// goes wrong in gl.Init. Reading the error flag clears it, so I do it.
// Here's the reason:
// https://github.com/go-gl/glfw3/issues/50
// Maybe I should not even ask for a core profile anyway.
// What are the advantages are asking for a core profile?
if err := glw.CheckGlError(); err != nil {
err.Description = "OpenGL has this error right after init for some reason."
//fmt.Println(err)
}
{
// Assert OpenGL >= 3.3.
major := programState.Gl.Window.GetAttribute(glfw.ContextVersionMajor)
minor := programState.Gl.Window.GetAttribute(glfw.ContextVersionMinor)
fmt.Printf("OpenGL version %v.%v.\n", major, minor)
if (major < 3) || (major == 3 && minor < 3) {
panic("OpenGL version 3.3 required, your video card/driver does not seem to support it.")
}
}
programState.Gl.context = glw.NewGlContext()
programState.Gl.Shapes[floorID] = sculpt.FloorInstNorm(programState.Gl.context.Programs)
programState.Gl.Shapes[ceilingID] = sculpt.CeilingInstNorm(programState.Gl.context.Programs)
programState.Gl.Shapes[wallID] = sculpt.WallInstNorm(programState.Gl.context.Programs)
{
// I do not like the default reference frame of OpenGl.
// By default, we look in the direction -z, and y points up.
// I want z to point up, and I want to look in the direction +x
// by default. That way, I move on an xy plane where z is the
// altitude, instead of having the altitude stuffed between
// the two things I use the most. And my reason for pointing
// toward +x is that I use the convention for trigonometry:
// an angle of 0 points to the right (east) of the trigonometric
// circle. Bonus point: this matches Blender's reference frame.
myFrame := glm.ZUP.Mult(glm.RotZ(90))
eye_to_clip := glm.PerspectiveProj(110, 640./480., .1, 100).Mult(myFrame)
programState.Gl.context.SetEyeToClp(eye_to_clip)
}
gl.Enable(gl.FRAMEBUFFER_SRGB)
gl.Enable(gl.DEPTH_TEST)
gl.Enable(gl.CULL_FACE)
gl.CullFace(gl.BACK)
gl.FrontFace(gl.CCW)
gl.Enable(gl.TEXTURE_CUBE_MAP_SEAMLESS)
// This needs a texture server attached to the context, like for programs.
glw.LoadSkybox()
programState.World = world.MakeWorld()
mainLoop(programState)
}