本文整理汇总了Golang中github.com/go-gl/glfw3.WindowHint函数的典型用法代码示例。如果您正苦于以下问题:Golang WindowHint函数的具体用法?Golang WindowHint怎么用?Golang WindowHint使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了WindowHint函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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()
}
}
开发者ID:jasonrpowers,项目名称:glow,代码行数:30,代码来源:legacy_cube.go
示例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()
}
}
开发者ID:krux02,项目名称:mathgl,代码行数:35,代码来源:main.go
示例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()
}
开发者ID:nobonobo,项目名称:go-three,代码行数:28,代码来源:three_test.go
示例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
}
开发者ID:niksaak,项目名称:goticles,代码行数:32,代码来源:engine.go
示例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()
}
}
开发者ID:kebo,项目名称:gorgasm,代码行数:27,代码来源:runner.go
示例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()
}
}
开发者ID:remogatto,项目名称:gltext,代码行数:28,代码来源:runner.go
示例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)
}
开发者ID:james4k,项目名称:exp,代码行数:14,代码来源:run.go
示例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
}
开发者ID:JamesClonk,项目名称:asteroids,代码行数:44,代码来源:main.go
示例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)
}
}
开发者ID:nick-fedesna,项目名称:egles,代码行数:39,代码来源:main.go
示例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"))
}
}
开发者ID:jasonroelofs,项目名称:slartibartfast,代码行数:52,代码来源:opengl_window.go
示例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)
}
开发者ID:james4k,项目名称:go-bgfx-examples,代码行数:20,代码来源:example.go
示例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()
}
}
开发者ID:nzlov,项目名称:examples,代码行数:40,代码来源:gears.go
示例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()
}
}
开发者ID:nzlov,项目名称:gogl,代码行数:37,代码来源:09.go
示例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
}
开发者ID:GlenKelley,项目名称:go-glutil,代码行数:72,代码来源:gameloop.go
示例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)
}
开发者ID:Niriel,项目名称:daggor,代码行数:81,代码来源:main.go
示例16: Window
func (me *context) Window(winf *ngctx.WinProfile, bufSize *ngctx.BufferBits, ctxProf *ngctx.CtxProfile) (window ngctx.Window, err error) {
glfw.WindowHint(glfw.Samples, winf.MultiSampling)
glfw.WindowHint(glfw.RedBits, bufSize.Color.R)
glfw.WindowHint(glfw.GreenBits, bufSize.Color.G)
glfw.WindowHint(glfw.BlueBits, bufSize.Color.B)
glfw.WindowHint(glfw.AlphaBits, bufSize.Color.A)
glfw.WindowHint(glfw.DepthBits, bufSize.Depth)
glfw.WindowHint(glfw.StencilBits, bufSize.Stencil)
glfw.WindowHint(glfw.ContextVersionMajor, ctxProf.Version.Major)
glfw.WindowHint(glfw.ContextVersionMinor, ctxProf.Version.Minor)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
if ctxProf.ForwardCompat {
glfw.WindowHint(glfw.OpenglForwardCompatible, 1)
}
var mon *glfw.Monitor
if winf.FullScreen {
mon, err = glfw.GetPrimaryMonitor()
}
if err == nil {
var win *glfw.Window
if win, err = glfw.CreateWindow(winf.Width, winf.Height, winf.Title, mon, nil); win != nil {
window = newWindow(win)
if winf.FullScreen {
win.SetInputMode(glfw.Cursor, glfw.CursorHidden)
}
}
}
return
}
开发者ID:go3d,项目名称:go-ngine,代码行数:29,代码来源:ctx.go
示例17: Hint
func (me *context) Hint(flag, value int) {
glfw.WindowHint(glfw.Hint(flag), value)
}
开发者ID:go3d,项目名称:go-ngine,代码行数:3,代码来源:ctx.go
示例18: main
func main() {
// Initialize GLFW for window management
glfw.SetErrorCallback(glfwErrorCallback)
if !glfw.Init() {
panic("failed to initialize glfw")
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.False)
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 3)
glfw.WindowHint(glfw.OpenglForwardCompatible, glfw.True) // Necessary for OS X
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile) // Necessary for OS X
glfw.WindowHint(glfw.OpenglDebugContext, glfw.True)
window, err := glfw.CreateWindow(WindowWidth, WindowHeight, "Cube", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
// Initialize Glow
if err := gl.Init(); err != nil {
panic(err)
}
// Note that it is possible to use GL functions spanning multiple versions
if err := gl4.Init(); err != nil {
fmt.Printf("Could not initialize GL 4.4 (non-fatal)")
}
if gl.ARB_debug_output {
gl.Enable(gl.DEBUG_OUTPUT_SYNCHRONOUS_ARB)
gl.DebugMessageCallbackARB(gl.DebugProc(glDebugCallback), gl.Ptr(nil))
// Trigger an error to demonstrate debug output
gl.Enable(gl.CONTEXT_FLAGS)
}
version := gl.GoStr(gl.GetString(gl.VERSION))
fmt.Println("OpenGL version", version)
// Configure the vertex and fragment shaders
program, err := newProgram(vertexShader, fragmentShader)
if err != nil {
panic(err)
}
gl.UseProgram(program)
projection := mgl32.Perspective(70.0, float32(WindowWidth)/WindowHeight, 0.1, 10.0)
projectionUniform := gl.GetUniformLocation(program, gl.Str("projection\x00"))
gl.UniformMatrix4fv(projectionUniform, 1, false, &projection[0])
camera := mgl32.LookAtV(mgl32.Vec3{3, 3, 3}, mgl32.Vec3{0, 0, 0}, mgl32.Vec3{0, 1, 0})
cameraUniform := gl.GetUniformLocation(program, gl.Str("camera\x00"))
gl.UniformMatrix4fv(cameraUniform, 1, false, &camera[0])
model := mgl32.Ident4()
modelUniform := gl.GetUniformLocation(program, gl.Str("model\x00"))
gl.UniformMatrix4fv(modelUniform, 1, false, &model[0])
textureUniform := gl.GetUniformLocation(program, gl.Str("tex\x00"))
gl.Uniform1i(textureUniform, 0)
gl.BindFragDataLocation(program, 0, gl.Str("outputColor\x00"))
// Load the texture
texture, err := newTexture("square.png")
if err != nil {
panic(err)
}
// Configure the vertex data
var vao uint32
gl.GenVertexArrays(1, &vao)
gl.BindVertexArray(vao)
var vbo uint32
gl.GenBuffers(1, &vbo)
gl.BindBuffer(gl.ARRAY_BUFFER, vbo)
gl.BufferData(gl.ARRAY_BUFFER, len(cubeVertices)*4, gl.Ptr(cubeVertices), gl.STATIC_DRAW)
vertAttrib := uint32(gl.GetAttribLocation(program, gl.Str("vert\x00")))
gl.EnableVertexAttribArray(vertAttrib)
gl.VertexAttribPointer(vertAttrib, 3, gl.FLOAT, false, 5*4, gl.PtrOffset(0))
texCoordAttrib := uint32(gl.GetAttribLocation(program, gl.Str("vertTexCoord\x00")))
gl.EnableVertexAttribArray(texCoordAttrib)
gl.VertexAttribPointer(texCoordAttrib, 2, gl.FLOAT, false, 5*4, gl.PtrOffset(3*4))
// Configure global settings
gl.Enable(gl.DEPTH_TEST)
gl.DepthFunc(gl.LESS)
gl.ClearColor(1.0, 1.0, 1.0, 1.0)
angle := 0.0
previousTime := glfw.GetTime()
for !window.ShouldClose() {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
// Update
//.........这里部分代码省略.........
开发者ID:jasonrpowers,项目名称:glow,代码行数:101,代码来源:cube.go
示例19: main
func main() {
runtime.LockOSThread()
var looping = true
defer fmt.Println("EXIT")
// if err = glfw.Init(); err != nil {
// panic(err)
// }
if !glfw.Init() {
panic("glfw.Init() failed!")
}
defer glfw.Terminate()
// glfw.OpenWindowHint(glfw.FsaaSamples, 0)
glfw.WindowHint(glfw.Samples, 0)
if useStrictCoreProfile {
// glfw.OpenWindowHint(glfw.OpenGLVersionMajor, 3)
// glfw.OpenWindowHint(glfw.OpenGLVersionMinor, 2)
// glfw.OpenWindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 2)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
}
// if err = glfw.OpenWindow(1280, 720, 8, 8, 8, 0, 24, 8, glfw.Windowed); err != nil {
// panic(err)
// }
// defer glfw.CloseWindow()
glfw.WindowHint(glfw.RedBits, 8)
glfw.WindowHint(glfw.BlueBits, 8)
glfw.WindowHint(glfw.GreenBits, 8)
glfw.WindowHint(glfw.AlphaBits, 0)
glfw.WindowHint(glfw.DepthBits, 24)
glfw.WindowHint(glfw.StencilBits, 8)
win, err := glfw.CreateWindow(1280, 720, "Test", nil, nil)
if err != nil {
panic(err)
}
defer win.Destroy()
win.MakeContextCurrent()
// glfw.Enable(glfw.StickyKeys)
win.SetInputMode(glfw.StickyKeys, glfw.True)
if !gl.Util.Init() {
panic("Failed to initialize at least OpenGL 3.2 or higher.")
}
defer logLastGlError("(post loop)")
gl.ClearColor(0.3, 0.1, 0.0, 1.0)
gl.Enable(gl.DEPTH_TEST)
gl.FrontFace(gl.CCW)
gl.CullFace(gl.BACK)
gl.Disable(gl.CULL_FACE)
if err = compileShaders(); err != nil {
panic(err)
}
setupGeometry()
defer deleteGeometry()
logLastGlError("(pre loop)")
for looping {
gl.UseProgram(shaderProg)
if isFirstLoop {
logLastGlError("gl.UseProgram")
}
gl.Viewport(0, 0, 1280, 720)
if isFirstLoop {
logLastGlError("gl.ViewPort")
}
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
if isFirstLoop {
logLastGlError("gl.Clear")
}
renderGeometry(faceTri)
if isFirstLoop {
logLastGlError("renderGeometry(faceTri)")
}
renderGeometry(faceQuad)
if isFirstLoop {
logLastGlError("renderGeometry(faceQuad)")
}
// if (glfw.WindowParam(glfw.Opened) != 1) || (glfw.Key(glfw.KeyEsc) == glfw.KeyPress) {
if win.ShouldClose() || win.GetKey(glfw.KeyEscape) == glfw.Press {
looping = false
} else {
// glfw.SwapBuffers()
win.SwapBuffers()
glfw.PollEvents()
}
isFirstLoop = false
}
logLastGlError("post-loop")
}
开发者ID:LonelyPale,项目名称:go-opengl,代码行数:94,代码来源:main.go
示例20: NewWindow
// NewWindow creates a new window for the given dimensions and title.
// The window is created via GLFW.
func NewWindow(settings WindowSettings) (*Window, error) {
// Error callback
glfw.SetErrorCallback(errorCallback)
// Init glfw
logger.Debug("Initializing GLFW")
if !glfw.Init() {
return nil, errors.New("Could not initialise GLFW.")
}
glfw.WindowHint(glfw.Samples, 4)
glfw.WindowHint(glfw.ContextVersionMajor, 3)
glfw.WindowHint(glfw.ContextVersionMinor, 3)
glfw.WindowHint(glfw.OpenglForwardCompatible, glfw.True)
glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile)
glfw.WindowHint(glfw.OpenglDebugContext, 1)
var monitor *glfw.Monitor
var err error
if settings.Fullscreen {
logger.Debug("Get primary monitor to create fullscreen window.")
monitor, err = glfw.GetPrimaryMonitor()
if err != nil {
return nil, err
}
logger.Debug("Checking available video modes:")
videoModes, err := monitor.GetVideoModes()
if err != nil {
return nil, err
}
for _, videoMode := range videoModes {
logger.Debug(fmt.Sprintf("-- %+v", videoMode))
}
idealVideoMode := videoModes[len(videoModes)-1]
settings.Width = idealVideoMode.Width
settings.Height = idealVideoMode.Height
}
// Create window
logger.Info("Creating new window")
window, err := glfw.CreateWindow(settings.Width, settings.Height, settings.Title, monitor, nil)
if err != nil {
return nil, err
}
window.SetKeyCallback(keyCallback)
window.MakeContextCurrent()
window.SetInputMode(glfw.StickyKeys, 1)
// Use vsync
glfw.SwapInterval(1)
w := &Window{
window: window,
Settings: settings,
}
currentWindow = w
return w, nil
}
开发者ID:nobonobo,项目名称:go-three,代码行数:66,代码来源:window.go
注:本文中的github.com/go-gl/glfw3.WindowHint函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论