本文整理汇总了Golang中github.com/go-gl/gl/v2/1/gl.Viewport函数的典型用法代码示例。如果您正苦于以下问题:Golang Viewport函数的具体用法?Golang Viewport怎么用?Golang Viewport使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Viewport函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: main
func main() {
if err := glfw.Init(); err != nil {
log.Fatalln("failed to initialize glfw:", err)
}
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, "Create Window Example", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
window.SetKeyCallback(keypress)
window.SetMouseButtonCallback(mousepress)
gl.Viewport(0, 0, 800, 600)
for !window.ShouldClose() {
draw()
window.SwapBuffers()
glfw.PollEvents()
}
}
开发者ID:buwilliams,项目名称:go2dgame,代码行数:32,代码来源:game.go
示例2: main
func main() {
err := glfw.Init()
if err != nil {
panic(err)
}
defer glfw.Terminate()
fp, err := os.Open("example.tmx")
if err != nil {
panic(err)
}
m, err := tmx.NewMap(fp)
if err != nil {
panic(err)
}
var monitor *glfw.Monitor
window, err := glfw.CreateWindow(screenWidth, screenHeight, "Map Renderer", monitor, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
width, height := window.GetFramebufferSize()
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
gl.ClearColor(1.0, 1.0, 1.0, 1.0)
gl.Viewport(0, 0, int32(width), int32(height))
gl.MatrixMode(gl.PROJECTION)
gl.LoadIdentity()
gl.Ortho(0, float64(width), float64(height), 0, -1, 1)
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
canvas := newOpenGLCanvas(width, height, float32(width)/float32(screenWidth), float32(height)/float32(screenHeight))
renderer := tmx.NewRenderer(*m, canvas)
fps := 0
startTime := time.Now().UnixNano()
timer := tmx.CreateTimer()
timer.Start()
for !window.ShouldClose() {
elapsed := float64(timer.GetElapsedTime()) / (1000 * 1000)
renderer.Render(int64(math.Ceil(elapsed)))
fps++
if time.Now().UnixNano()-startTime > 1000*1000*1000 {
log.Println(fps)
startTime = time.Now().UnixNano()
fps = 0
}
window.SwapBuffers()
glfw.PollEvents()
timer.UpdateTime()
}
}
开发者ID:manyminds,项目名称:tmx,代码行数:58,代码来源:opengl.go
示例3: drawScene
func drawScene(w *glfw.Window) {
width, height := w.GetFramebufferSize()
ratio := float32(width) / float32(height)
var x1, x2, y1, y2 float32
if ratio > 1 {
x1, x2, y1, y2 = -ratio, ratio, -1, 1
} else {
x1, x2, y1, y2 = -1, 1, -1/ratio, 1/ratio
}
gl.Viewport(0, 0, int32(width), int32(height))
gl.Clear(gl.COLOR_BUFFER_BIT)
// Applies subsequent matrix operations to the projection matrix stack
gl.MatrixMode(gl.PROJECTION)
gl.LoadIdentity() // replace the current matrix with the identity matrix
gl.Ortho(float64(x1), float64(x2), float64(y1), float64(y2), 1, -1) // multiply the current matrix with an orthographic matrix
// Applies subsequent matrix operations to the modelview matrix stack
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.LineWidth(1)
gl.Begin(gl.LINE) // delimit the vertices of a primitive or a group of like primitives
gl.Color3f(0, 0, 0) // set the current color
gl.Vertex3f(0, y1, 0)
gl.Vertex3f(0, y2, 0)
gl.Vertex3f(x1, 0, 0)
gl.Vertex3f(x2, 0, 0)
gl.End()
gl.Rotatef(float32(glfw.GetTime()*50), 0, 0, 1) // multiply the current matrix by a rotation matrix
s := float32(.95)
gl.Begin(gl.TRIANGLES)
gl.Color3f(1, 0, 0) // set the current color
gl.Vertex3f(0, s, 0) // specify a vertex
gl.Color3f(0, 1, 0)
gl.Vertex3f(s*.866, s*-0.5, 0)
gl.Color3f(0, 0, 1)
gl.Vertex3f(s*-.866, s*-0.5, 0)
gl.End()
gl.LineWidth(5)
gl.Begin(gl.LINE_LOOP)
for i := float64(0); i < 2*math.Pi; i += .05 {
r, g, b := hsb2rgb(float32(i/(2*math.Pi)), 1, 1)
gl.Color3f(r, g, b)
gl.Vertex3f(s*float32(math.Sin(i)), s*float32(math.Cos(i)), 0)
}
gl.End()
}
开发者ID:rdterner,项目名称:gl,代码行数:56,代码来源:demo.go
示例4: reshape
/* new window size or exposure */
func reshape(width int32, height int32) {
h := float64(height) / float64(width)
gl.Viewport(0, 0, width, height)
gl.MatrixMode(gl.PROJECTION)
gl.LoadIdentity()
gl.Frustum(-1.0, 1.0, -h, h, 5.0, 600.0)
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Translatef(0.0, 0.0, -100)
}
开发者ID:pietdaniel,项目名称:gl_maze,代码行数:11,代码来源:main.go
示例5: onResize
// onResize sets up a simple 2d ortho context based on the window size
func onResize(window *glfw.Window, w, h int) {
w, h = window.GetSize() // query window to get screen pixels
width, height := window.GetFramebufferSize()
gl.Viewport(0, 0, int32(width), int32(height))
gl.MatrixMode(gl.PROJECTION)
gl.LoadIdentity()
gl.Ortho(0, float64(w), 0, float64(h), -1, 1)
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.ClearColor(1, 1, 1, 1)
}
开发者ID:jhautefeuille,项目名称:hellochipmunk,代码行数:12,代码来源:glfwtest.go
示例6: SetViewport
func (c *Context) SetViewport(f Framebuffer, width, height int) error {
gl.Flush()
gl.BindFramebuffer(gl.FRAMEBUFFER, uint32(f))
if err := gl.CheckFramebufferStatus(gl.FRAMEBUFFER); err != gl.FRAMEBUFFER_COMPLETE {
if e := gl.GetError(); e != 0 {
return errors.New(fmt.Sprintf("glBindFramebuffer failed: %d", e))
}
return errors.New("glBindFramebuffer failed: the context is different?")
}
gl.Viewport(0, 0, int32(width), int32(height))
return nil
}
开发者ID:DrJosh9000,项目名称:ebiten,代码行数:12,代码来源:context.go
示例7: Reset
func (state *State) Reset(window *glfw.Window) {
gl.ClearColor(1, 1, 1, 1)
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Disable(gl.DEPTH)
gl.Enable(gl.FRAMEBUFFER_SRGB)
width, height := window.GetSize()
gl.Viewport(0, 0, int32(width), int32(height))
gl.Ortho(0, float64(width), float64(height), 0, 30, -30)
}
开发者ID:egonelbre,项目名称:spector,代码行数:13,代码来源:ui.go
示例8: reshape
func reshape(window *glfw.Window, w, h int) {
gl.ClearColor(1, 1, 1, 1)
//fmt.Println(gl.GetString(gl.EXTENSIONS))
gl.Viewport(0, 0, int32(w), int32(h)) /* Establish viewing area to cover entire window. */
gl.MatrixMode(gl.PROJECTION) /* Start modifying the projection matrix. */
gl.LoadIdentity() /* Reset project matrix. */
gl.Ortho(0, float64(w), 0, float64(h), -1, 1) /* Map abstract coords directly to window coords. */
gl.Scalef(1, -1, 1) /* Invert Y axis so increasing Y goes down. */
gl.Translatef(0, float32(-h), 0) /* Shift origin up to upper-left corner. */
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
gl.Disable(gl.DEPTH_TEST)
width, height = w, h
}
开发者ID:zzn01,项目名称:draw2d,代码行数:14,代码来源:postscriptgl.go
示例9: reshape
func reshape(w int, h int) {
/* Because Gil specified "screen coordinates" (presumably with an
upper-left origin), this short bit of code sets up the coordinate
system to correspond to actual window coodrinates. This code
wouldn't be required if you chose a (more typical in 3D) abstract
coordinate system. */
gl.Viewport(0, 0, int32(w), int32(h)) /* Establish viewing area to cover entire window. */
gl.MatrixMode(gl.PROJECTION) /* Start modifying the projection matrix. */
gl.LoadIdentity() /* Reset project matrix. */
gl.Ortho(0, float64(w), 0, float64(h), -1, 1) /* Map abstract coords directly to window coords. */
gl.Scalef(1, -1, 1) /* Invert Y axis so increasing Y goes down. */
gl.Translatef(0, float32(-h), 0) /* Shift origin up to upper-left corner. */
}
开发者ID:XO-Lib,项目名称:GCXO,代码行数:14,代码来源:Window.go
示例10: main
func main() {
var winTitle string = "Go-SDL2 + Go-GL"
var winWidth, winHeight int = 800, 600
var window *sdl.Window
var context sdl.GLContext
var event sdl.Event
var running bool
var err error
if err = sdl.Init(sdl.INIT_EVERYTHING); err != nil {
panic(err)
}
defer sdl.Quit()
if err = gl.Init(); err != nil {
panic(err)
}
window, err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
winWidth, winHeight, sdl.WINDOW_OPENGL)
if err != nil {
panic(err)
}
defer window.Destroy()
context, err = sdl.GL_CreateContext(window)
if err != nil {
panic(err)
}
defer sdl.GL_DeleteContext(context)
gl.Enable(gl.DEPTH_TEST)
gl.ClearColor(0.2, 0.2, 0.3, 1.0)
gl.ClearDepth(1)
gl.DepthFunc(gl.LEQUAL)
gl.Viewport(0, 0, int32(winWidth), int32(winHeight))
running = true
for running {
for event = sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
switch t := event.(type) {
case *sdl.QuitEvent:
running = false
case *sdl.MouseMotionEvent:
fmt.Printf("[%d ms] MouseMotion\tid:%d\tx:%d\ty:%d\txrel:%d\tyrel:%d\n", t.Timestamp, t.Which, t.X, t.Y, t.XRel, t.YRel)
}
}
drawgl()
sdl.GL_SwapWindow(window)
}
}
开发者ID:emlai,项目名称:go-sdl2,代码行数:50,代码来源:opengl.go
示例11: Reshape
func (v *Video) Reshape(width int32, height int32) {
var x_offset int32 = 0
var y_offset int32 = 0
r := ((float64)(height)) / ((float64)(width))
if r > 0.9375 { // Height taller than ratio
h := (int32)(math.Floor((float64)(0.9375 * (float64)(width))))
y_offset = (height - h) / 2
height = h
} else if r < 0.9375 { // Width wider
w := (int32)(math.Floor((float64)((256.0 / 240.0) * (float64)(height))))
x_offset = (width - w) / 2
width = w
}
v.width = width
v.height = height
gl.Viewport(x_offset, y_offset, width, height)
}
开发者ID:badfortrains,项目名称:Fergulator,代码行数:21,代码来源:video.go
示例12: main
func main() {
if err := glfw.Init(nopContextWatcher{}); err != nil {
panic(err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Samples, 8) // Anti-aliasing.
window, err := glfw.CreateWindow(400, 400, "", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
glfw.SwapInterval(1) // Vsync.
InitFont()
defer DeinitFont()
framebufferSizeCallback := func(w *glfw.Window, framebufferSize0, framebufferSize1 int) {
gl.Viewport(0, 0, int32(framebufferSize0), int32(framebufferSize1))
var windowSize [2]int
windowSize[0], windowSize[1] = w.GetSize()
// Update the projection matrix.
gl.MatrixMode(gl.PROJECTION)
gl.LoadIdentity()
gl.Ortho(0, float64(windowSize[0]), float64(windowSize[1]), 0, -1, 1)
gl.MatrixMode(gl.MODELVIEW)
}
{
var framebufferSize [2]int
framebufferSize[0], framebufferSize[1] = window.GetFramebufferSize()
framebufferSizeCallback(window, framebufferSize[0], framebufferSize[1])
}
window.SetFramebufferSizeCallback(framebufferSizeCallback)
var inputEventQueue []events.InputEvent
mousePointer = &events.Pointer{VirtualCategory: events.POINTING}
window.SetMouseMovementCallback(func(w *glfw.Window, xpos, ypos, xdelta, ydelta float64) {
inputEvent := events.InputEvent{
Pointer: mousePointer,
EventTypes: map[events.EventType]struct{}{events.SLIDER_EVENT: {}},
InputId: 0,
Buttons: nil,
Sliders: []float64{xdelta, ydelta},
}
if w.GetInputMode(glfw.CursorMode) != glfw.CursorDisabled {
inputEvent.EventTypes[events.AXIS_EVENT] = struct{}{}
inputEvent.Axes = []float64{xpos, ypos}
}
inputEventQueue = events.EnqueueInputEvent(inputEventQueue, inputEvent)
})
window.SetMouseButtonCallback(func(w *glfw.Window, button glfw.MouseButton, action glfw.Action, mods glfw.ModifierKey) {
inputEvent := events.InputEvent{
Pointer: mousePointer,
EventTypes: map[events.EventType]struct{}{events.BUTTON_EVENT: {}},
InputId: uint16(button),
Buttons: []bool{action != glfw.Release},
Sliders: nil,
Axes: nil,
ModifierKey: uint8(mods),
}
inputEventQueue = events.EnqueueInputEvent(inputEventQueue, inputEvent)
})
go func() {
<-time.After(5 * time.Second)
log.Println("trigger!")
boxUpdated = true
glfw.PostEmptyEvent()
}()
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) // For font.
gl.ClearColor(247.0/255, 247.0/255, 247.0/255, 1)
var spinner int
var widgets []events.Widgeter
widgets = append(widgets, NewButtonWidget(mgl64.Vec2{50, 200}, func() { fmt.Println("button triggered") }))
for !window.ShouldClose() && glfw.Press != window.GetKey(glfw.KeyEscape) {
glfw.WaitEvents()
// Process Input.
inputEventQueue = events.ProcessInputEventQueue(inputEventQueue, widgets[0])
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.LoadIdentity()
//.........这里部分代码省略.........
开发者ID:rexposadas,项目名称:gx,代码行数:101,代码来源:main.go
示例13: setViewportImpl
func (c *Context) setViewportImpl(width, height int) error {
return c.runOnContextThread(func() error {
gl.Viewport(0, 0, int32(width), int32(height))
return nil
})
}
开发者ID:hajimehoshi,项目名称:ebiten,代码行数:6,代码来源:context_desktop.go
示例14: Run
func Run(charset string, charwidth, charheight int, eh EventHandler) {
mousetrans := mouseTranslator{}
keytrans := keyTranslator{}
defer eh.Fin(true)
width := 800
height := 600
// Initialize glfw and create window
err := glfw.Init()
Panic(err)
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.True)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
window, err := glfw.CreateWindow(width, height, "Roguelike", nil, nil)
defer window.Destroy()
Panic(err)
window.MakeContextCurrent()
// Initialize opengl
err = gl.Init()
Panic(err)
// Create shaders and program
program, err := gli.NewProgram(vertexShaderText, fragmentShaderText)
Panic(err)
defer program.Delete()
// Load and initialize texture
img, err := gli.LoadImage(charset)
Panic(err)
texture, err := gli.NewTexture(img,
gli.TextureFilter(gli.LINEAR, gli.LINEAR),
gli.TextureWrap(gli.CLAMP_TO_EDGE, gli.CLAMP_TO_EDGE))
Panic(err)
defer texture.Delete()
// Create Vertex ArrayObject
vao, err := gli.NewVAO()
Panic(err)
defer vao.Delete()
// Create grid
grid, err := NewGrid(charwidth, charheight, texture.Size().X, texture.Size().Y)
Panic(err)
grid.Resize(width, height)
vCoords, vIndex, vData := grid.Buffers()
// Create grid buffers
posvbo, err := gli.NewBuffer(vCoords)
Panic(err)
defer posvbo.Delete()
idxvbo, err := gli.NewBuffer(vIndex, gli.BufferElementArray())
Panic(err)
defer idxvbo.Delete()
vbo, err := gli.NewBuffer(vData, gli.BufferAccessFrequency(gli.DYNAMIC))
Panic(err)
defer vbo.Delete()
window.SetSizeCallback(func(win *glfw.Window, w, h int) {
//fmt.Printf("resize\n")
width = w
height = h
gl.Viewport(0, 0, int32(width), int32(height))
grid.Resize(width, height)
vCoords, vIndex, vData := grid.Buffers()
posvbo.Upload(vCoords)
idxvbo.Upload(vIndex)
vbo.Upload(vData)
})
window.SetKeyCallback(func(win *glfw.Window, key glfw.Key, scancode int, action glfw.Action, mods glfw.ModifierKey) {
//fmt.Printf("key=%v code=%d, action=%v, mods=%v\n", key, scancode, action, mods)
e, ok := keytrans.Key(key, action, mods)
if ok {
eh.Key(e)
}
})
window.SetCharCallback(func(win *glfw.Window, key rune) {
eh.Char(key)
//fmt.Printf("char=%d(%c)\n", key, key)
})
window.SetCursorPosCallback(func(win *glfw.Window, x float64, y float64) {
e, ok := mousetrans.Pos(x, y)
if ok {
eh.Mouse(e)
}
})
window.SetMouseButtonCallback(func(win *glfw.Window, button glfw.MouseButton, action glfw.Action, mods glfw.ModifierKey) {
e, ok := mousetrans.Button(button, action, mods)
if ok {
eh.Mouse(e)
}
})
// Set up VAO
vao.Enable(2, posvbo, program.Attrib("position"))
vao.Enable(2, vbo, program.Attrib("texCoord"),
//.........这里部分代码省略.........
开发者ID:PieterD,项目名称:crap,代码行数:101,代码来源:render.go
示例15: drawScreen
func (ctx *DrawContext) drawScreen(o *orrery.Orrery) {
fullscreen := false
gl.Viewport(0, 0, int32(ctx.width), int32(ctx.height))
gl.Hint(gl.PERSPECTIVE_CORRECTION_HINT, gl.NICEST)
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Translatef(0, 0, 0)
t_delta := time.Duration(0)
frametime := time.Second / 24
log.Printf(`ft: %v`, frametime)
frametimes := time.Duration(0)
nsamples := 0
slowest_frame := time.Duration(0)
frames_over_deadline := 0
defer func() {
log.Printf(`average frame time: %v, #sample: %d`, frametimes/time.Duration(nsamples), nsamples)
log.Printf(`slowest frame: %v, # of frames over %v: %d`, slowest_frame, frametime, frames_over_deadline)
}()
for {
t_start := time.Now()
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
ctx.cam.Update()
ctx.drawGrid()
ctx.drawParticles(o)
ctx.drawHud(o, t_delta)
ctx.win.SwapBuffers()
glfw.PollEvents()
select {
case cmd := <-ctx.cmd:
switch cmd {
case DRAW_QUIT:
return
case DRAW_FULLSCREEN:
/*
if fullscreen {
ctx.win.SetFullscreen(0)
} else {
ctx.win.SetFullscreen(sdl.WINDOW_FULLSCREEN)
}
*/
fullscreen = !fullscreen
case DRAW_TOGGLE_WIREFRAME:
ctx.wireframe = !ctx.wireframe
case DRAW_TOGGLE_VERBOSE:
ctx.verbose = !ctx.verbose
}
default:
/* ignore */
}
t_delta = time.Since(t_start)
frametimes += t_delta
nsamples++
if t_delta > slowest_frame {
slowest_frame = t_delta
}
if t_delta > frametime {
frames_over_deadline++
}
t_sleep := frametime.Nanoseconds() - t_delta.Nanoseconds()
if t_sleep > 0 {
time.Sleep(time.Duration(t_sleep) * time.Nanosecond)
}
}
}
开发者ID:farhaven,项目名称:universe,代码行数:74,代码来源:drawing.go
示例16: main
func main() {
if err := glfw.Init(); err != nil {
panic(err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Samples, 8) // Anti-aliasing.
window, err := glfw.CreateWindow(400, 400, "", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
glfw.SwapInterval(1)
//window.SetPos(50, 600)
//window.SetPos(1600, 600)
//window.SetPos(1275, 300)
//window.SetPos(1200, 300)
framebufferSizeCallback := func(w *glfw.Window, framebufferSize0, framebufferSize1 int) {
gl.Viewport(0, 0, int32(framebufferSize0), int32(framebufferSize1))
var windowSize [2]int
windowSize[0], windowSize[1] = w.GetSize()
// Update the projection matrix.
gl.MatrixMode(gl.PROJECTION)
gl.LoadIdentity()
gl.Ortho(0, float64(windowSize[0]), float64(windowSize[1]), 0, -1, 1)
gl.MatrixMode(gl.MODELVIEW)
}
{
var framebufferSize [2]int
framebufferSize[0], framebufferSize[1] = window.GetFramebufferSize()
framebufferSizeCallback(window, framebufferSize[0], framebufferSize[1])
}
window.SetFramebufferSizeCallback(framebufferSizeCallback)
go func() {
<-time.After(5 * time.Second)
log.Println("trigger!")
boxUpdated = true
glfw.PostEmptyEvent()
}()
//gl.ClearColor(0.8, 0.3, 0.01, 1)
gl.ClearColor(247.0/255, 247.0/255, 247.0/255, 1)
var spinner int
for !window.ShouldClose() && glfw.Press != window.GetKey(glfw.KeyEscape) {
glfw.WaitEvents()
//glfw.PollEvents()
gl.Clear(gl.COLOR_BUFFER_BIT)
drawSpinner(spinner)
spinner++
drawBox()
window.SwapBuffers()
log.Println("swapped buffers")
//runtime.Gosched()
}
}
开发者ID:taliszhou,项目名称:Conception-go,代码行数:73,代码来源:main.go
示例17: main
//.........这里部分代码省略.........
}
if key == glfw.KeyKP8 {
g.DealResources(8)
}
if key == glfw.KeyKP9 {
g.DealResources(9)
}
if key == glfw.KeyKP0 {
g.DealResources(10)
}
if key == glfw.KeyKP1 {
g.DealResources(11)
}
if key == glfw.KeyKP7 {
g.DealResources(12)
}
if len(lines) > 0 && key == glfw.KeyBackspace && (action == glfw.Press || action == glfw.Repeat) {
if len(lines[len(lines)-1]) == 0 {
lines = lines[:len(lines)-1]
} else {
lines[len(lines)-1] = removeLastRune(lines[len(lines)-1])
}
}
if (action == glfw.Press || action == glfw.Repeat) &&
(key == glfw.KeyEnter || key == glfw.KeyKPEnter) {
lines = append(lines, "")
}
})
window.SetInputMode(glfw.CursorMode, glfw.CursorHidden)
window.SetInputMode(glfw.CursorMode, glfw.CursorNormal)
window.SetSizeCallback(func(_ *glfw.Window, w, h int) {
windowW, windowH = w, h
cam.WindowWidth, cam.WindowHeight = w, h
gl.Viewport(0, 0, int32(w), int32(h))
})
if err := loadImages(); err != nil {
fmt.Println(err)
return
}
var background image.Image
var backImg *glImage
go func() {
gameW, gameH := 7*200, 7*tileYOffset+tileSlopeHeight
back := image.NewRGBA(image.Rect(0, 0, gameW, gameH))
clearToTransparent(back)
drawGameBackgroundIntoImage(back, g)
background = back
}()
gameColorToString := func(c game.Color) string {
switch c {
case game.Red:
return "red"
case game.Orange:
return "orange"
case game.Blue:
return "blue"
default:
return "white"
}
}
roadImage := func(pos game.TileEdge, c game.Color) *glImage {
color := gameColorToString(c)
开发者ID:gonutz,项目名称:settlers,代码行数:67,代码来源:main_glfw.go
示例18: Viewport
func (c *Context) Viewport(x, y, width, height int) {
gl.Viewport(int32(x), int32(y), int32(width), int32(height))
}
开发者ID:EngoEngine,项目名称:gl,代码行数:3,代码来源:gl_gl2.go
示例19: setViewport
func setViewport(width int, height int) {
gl.Viewport(0, 0, int32(width), int32(height))
gl.Ortho(-float64(width)/2, float64(width)/2,
-float64(height)/2, float64(height)/2, -1.0, 1.0)
}
开发者ID:fmd,项目名称:gogol,代码行数:6,代码来源:window.go
示例20: main
func main() {
flag.Parse()
go func() {
http.ListenAndServe("localhost:6060", nil)
}()
go func() {
for {
runtime.GC()
time.Sleep(1)
}
}()
if err := glfw.Init(); err != nil {
log.Fatalln("failed to initialize glfw:", err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.True)
glfw.WindowHint(glfw.Visible, glfw.False) // do not steal focus
glfw.WindowHint(glfw.Samples, 4)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
window, err := glfw.CreateWindow(800, 600, "Spector", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
window.Restore()
window.SetPos(32, 64)
if err := gl.Init(); err != nil {
panic(err)
}
if err := gl.GetError(); err != 0 {
fmt.Println("INIT", err)
}
startnano := time.Now().UnixNano()
DrawList := draw.NewList()
for !window.ShouldClose() {
start := qpc.Now()
if window.GetKey(glfw.KeyEscape) == glfw.Press {
return
}
now := float64(time.Now().UnixNano()-startnano) / 1e9
width, height := window.GetSize()
{ // reset window
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Viewport(0, 0, int32(width), int32(height))
gl.Ortho(0, float64(width), float64(height), 0, 30, -30)
gl.ClearColor(1, 1, 1, 1)
gl.Clear(gl.COLOR_BUFFER_BIT)
}
DrawList.Reset()
DrawList.AddRectFill(&draw.Rectangle{
draw.Vector{10, 10},
draw.Vector{50, 50},
}, draw.Red)
CircleRadius := float32(50.0 * math.Sin(now*1.3))
DrawList.AddCircle(
draw.Vector{100, 100}, CircleRadius, draw.Red)
DrawList.AddArc(
draw.Vector{200, 100}, CircleRadius/2+50,
float32(now),
float32(math.Sin(now)*10),
draw.ColorHSL(float32(math.Sin(now*0.3)), 0.8, 0.5))
LineWidth := float32(math.Sin(now*2.1)*5 + 5)
LineCount := int(width / 8)
line := make([]draw.Vector, LineCount)
for i := range line {
r := float64(i) / float64(LineCount-1)
line[i].X = float32(r) * float32(width)
line[i].Y = float32(height)*0.5 + float32(math.Sin(r*11.8+now)*100)
}
DrawList.AddLine(line[:], LineWidth,
draw.ColorHSL(float32(math.Sin(now*0.3)), 0.6, 0.6))
CircleCount := int(width / 8)
circle := make([]draw.Vector, CircleCount)
for i := range circle {
p := float64(i) / float64(CircleCount)
a := now + p*math.Pi*2
w := math.Sin(p*62)*20.0 + 100.0
circle[i].X = float32(width)*0.5 + float32(math.Cos(a)*w)
circle[i].Y = float32(height)*0.5 + float32(math.Sin(a)*w)
//.........这里部分代码省略.........
开发者ID:egonelbre,项目名称:spector,代码行数:101,代码来源:main.go
注:本文中的github.com/go-gl/gl/v2/1/gl.Viewport函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论