本文整理汇总了Golang中github.com/veandco/go-sdl2/sdl.Renderer.Present方法的典型用法代码示例。如果您正苦于以下问题:Golang Renderer.Present方法的具体用法?Golang Renderer.Present怎么用?Golang Renderer.Present使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/veandco/go-sdl2/sdl.Renderer
的用法示例。
在下文中一共展示了Renderer.Present方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: run
func run() int {
var window *sdl.Window
var renderer *sdl.Renderer
var points []sdl.Point
var rect sdl.Rect
var rects []sdl.Rect
window, err := sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
winWidth, winHeight, sdl.WINDOW_SHOWN)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err)
return 1
}
defer window.Destroy()
renderer, err = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", err)
return 2
}
defer renderer.Destroy()
renderer.Clear()
renderer.SetDrawColor(255, 255, 255, 255)
renderer.DrawPoint(150, 300)
renderer.SetDrawColor(0, 0, 255, 255)
renderer.DrawLine(0, 0, 200, 200)
points = []sdl.Point{{0, 0}, {100, 300}, {100, 300}, {200, 0}}
renderer.SetDrawColor(255, 255, 0, 255)
renderer.DrawLines(points)
rect = sdl.Rect{300, 0, 200, 200}
renderer.SetDrawColor(255, 0, 0, 255)
renderer.DrawRect(&rect)
rects = []sdl.Rect{{400, 400, 100, 100}, {550, 350, 200, 200}}
renderer.SetDrawColor(0, 255, 255, 255)
renderer.DrawRects(rects)
rect = sdl.Rect{250, 250, 200, 200}
renderer.SetDrawColor(0, 255, 0, 255)
renderer.FillRect(&rect)
rects = []sdl.Rect{{500, 300, 100, 100}, {200, 300, 200, 200}}
renderer.SetDrawColor(255, 0, 255, 255)
renderer.FillRects(rects)
renderer.Present()
sdl.Delay(2000)
return 0
}
示例2: main
func main() {
var window *sdl.Window
var renderer *sdl.Renderer
var points []sdl.Point
var rect sdl.Rect
var rects []sdl.Rect
window = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
winWidth, winHeight, sdl.WINDOW_SHOWN)
if window == nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError())
os.Exit(1)
}
renderer = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if renderer == nil {
fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError())
os.Exit(2)
}
renderer.SetDrawColor(255, 255, 255, 255)
renderer.DrawPoint(150, 300)
renderer.SetDrawColor(0, 0, 255, 255)
renderer.DrawLine(0, 0, 200, 200)
points = []sdl.Point{{0, 0}, {100, 300}, {100, 300}, {200, 0}}
renderer.SetDrawColor(255, 255, 0, 255)
renderer.DrawLines(points)
rect = sdl.Rect{300, 0, 200, 200}
renderer.SetDrawColor(255, 0, 0, 255)
renderer.DrawRect(&rect)
rects = []sdl.Rect{{400, 400, 100, 100}, {550, 350, 200, 200}}
renderer.SetDrawColor(0, 255, 255, 255)
renderer.DrawRects(rects)
rect = sdl.Rect{250, 250, 200, 200}
renderer.SetDrawColor(0, 255, 0, 255)
renderer.FillRect(&rect)
rects = []sdl.Rect{{500, 300, 100, 100}, {200, 300, 200, 200}}
renderer.SetDrawColor(255, 0, 255, 255)
renderer.FillRects(rects)
renderer.Present()
sdl.Delay(2000)
renderer.Destroy()
window.Destroy()
}
示例3: run
func run() int {
var window *sdl.Window
var renderer *sdl.Renderer
var texture *sdl.Texture
var src, dst sdl.Rect
var err error
window, err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
winWidth, winHeight, sdl.WINDOW_SHOWN)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err)
return 1
}
defer window.Destroy()
renderer, err = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", err)
return 2
}
defer renderer.Destroy()
image, err := img.Load(imageName)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to load PNG: %s\n", err)
return 3
}
defer image.Free()
texture, err = renderer.CreateTextureFromSurface(image)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", err)
return 4
}
defer texture.Destroy()
src = sdl.Rect{0, 0, 512, 512}
dst = sdl.Rect{100, 50, 512, 512}
renderer.Clear()
renderer.SetDrawColor(255, 0, 0, 255)
renderer.FillRect(&sdl.Rect{0, 0, int32(winWidth), int32(winHeight)})
renderer.Copy(texture, &src, &dst)
renderer.Present()
sdl.Delay(2000)
return 0
}
示例4: main
func main() {
var window *sdl.Window
var renderer *sdl.Renderer
var texture *sdl.Texture
var src, dst sdl.Rect
window = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
winWidth, winHeight, sdl.WINDOW_SHOWN)
if window == nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", sdl.GetError())
os.Exit(1)
}
renderer = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if renderer == nil {
fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", sdl.GetError())
os.Exit(2)
}
image := img.Load(imageName)
if image == nil {
fmt.Fprintf(os.Stderr, "Failed to load PNG: %s\n", sdl.GetError())
os.Exit(3)
}
texture = renderer.CreateTextureFromSurface(image)
if texture == nil {
fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", sdl.GetError())
os.Exit(4)
}
src = sdl.Rect{0, 0, 512, 512}
dst = sdl.Rect{100, 50, 512, 512}
renderer.Clear()
renderer.SetDrawColor(255, 0, 0, 255)
renderer.FillRect(&sdl.Rect{0, 0, int32(winWidth), int32(winHeight)})
renderer.Copy(texture, &src, &dst)
renderer.Present()
sdl.Delay(2000)
image.Free()
texture.Destroy()
renderer.Destroy()
window.Destroy()
}
示例5: main
func main() {
var window *sdl.Window
var renderer *sdl.Renderer
var image *sdl.Surface
var texture *sdl.Texture
var src, dst sdl.Rect
var err error
window, err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
winWidth, winHeight, sdl.WINDOW_SHOWN)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err)
os.Exit(1)
}
defer window.Destroy()
renderer, err = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", err)
os.Exit(2)
}
defer renderer.Destroy()
image, err = sdl.LoadBMP(imageName)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to load BMP: %s\n", err)
os.Exit(3)
}
defer image.Free()
texture, err = renderer.CreateTextureFromSurface(image)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", err)
os.Exit(4)
}
defer texture.Destroy()
src = sdl.Rect{0, 0, 512, 512}
dst = sdl.Rect{100, 50, 512, 512}
renderer.Clear()
renderer.Copy(texture, &src, &dst)
renderer.Present()
sdl.Delay(2000)
}
示例6: run
func run(serverStr, name string) int {
var window *sdl.Window
var renderer *sdl.Renderer
var running bool
var event sdl.Event
var inputState InputState
url := "ws://" + serverStr
origin := "http://" + serverStr
ws, err := websocket.Dial(url, "", origin)
if err != nil {
fmt.Printf("%v\n", err)
os.Exit(1)
}
window, err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
winWidth, winHeight, sdl.WINDOW_SHOWN)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err)
return 1
}
defer window.Destroy()
renderer, err = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", err)
return 2
}
defer renderer.Destroy()
renderer.Clear()
websocket.Message.Send(ws, joinMessage(name))
running = true
var data map[string]map[string][]map[string]interface{}
decoder := msgpack.NewDecoder(ws)
renderer.SetDrawColor(1, 1, 1, 255)
renderer.Clear()
for running {
renderer.SetDrawColor(1, 1, 1, 255)
renderer.Clear()
newInputState := inputState
for event = sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
switch event.(type) {
case *sdl.QuitEvent:
running = false
case *sdl.KeyDownEvent:
switch event.(*sdl.KeyDownEvent).Keysym.Sym {
case sdl.K_ESCAPE:
running = false
case sdl.K_LEFT:
newInputState.Left = true
case sdl.K_RIGHT:
newInputState.Right = true
case sdl.K_UP:
newInputState.Thrust = true
}
case *sdl.KeyUpEvent:
switch event.(*sdl.KeyUpEvent).Keysym.Sym {
case sdl.K_LEFT:
newInputState.Left = false
case sdl.K_RIGHT:
newInputState.Right = false
case sdl.K_UP:
newInputState.Thrust = false
}
}
}
if !newInputState.IsSameAs(inputState) {
websocket.Message.Send(ws, newInputState.Message())
inputState = newInputState
}
decoder.Decode(&data)
for _, ship := range data["state"]["ships"] {
colourhex, _ := hex.DecodeString(ship["colour"].(string)[1:7])
rot, _ := ship["rotation"].(float64)
s := Ship{
Position: V2{float64(ship["x"].(int64)), float64(ship["y"].(int64))},
Size: 30,
Rotation: rot,
Doge: ship["doge"].(bool),
}
renderer.SetDrawColor(uint8(colourhex[0]), uint8(colourhex[1]), uint8(colourhex[2]), 255)
renderer.DrawLines(s.Points())
}
renderer.Present()
}
return 0
//.........这里部分代码省略.........
示例7: Render
func (view *gameView) Render(renderer *sdl.Renderer, events *Events) {
view.player.calculateMovement(events)
// start each new frame by filling the frame black
renderer.SetDrawColor(0, 0, 0, 0)
renderer.Clear()
// draw the player
renderer.SetDrawColor(255, 0, 0, 255)
playerSDLRect := view.player.rect.GetSDLRect()
renderer.DrawRect(playerSDLRect)
renderer.FillRect(playerSDLRect)
// draw the players spinning weapon
playerWeaponSDLRect := view.player.weapon.rect.GetSDLRect()
renderer.DrawRect(playerWeaponSDLRect)
renderer.FillRect(playerWeaponSDLRect)
// destroyedMeteors is used to remove destroyed meteors outside
// of looping through view.meteors to avoid out of range errors
var destroyedMeteors []int
// loop through the frames active meteors
for i, meteor := range view.meteors {
// move and draw and then reinsert the moved meteor
meteor.move()
enemySDLRect := meteor.rect.GetSDLRect()
renderer.SetDrawColor(0, 255, 0, 255)
renderer.DrawRect(enemySDLRect)
renderer.FillRect(enemySDLRect)
view.meteors[i] = meteor
// if the player and meteor collide, end the game
if view.player.rect.Colision(meteor.rect) {
renderer.Present()
log.Println("You died!")
log.Println("Score:", view.score)
sdl.Delay(1000)
os.Exit(0)
}
// if the weapon and meteor collide, destroy it and update score
if meteor.rect.Colision(view.player.weapon.rect) {
destroyedMeteors = append(destroyedMeteors, i)
view.score += 10
}
// if the meteor is off screen, destroy it and update score
if meteor.isOffScreen() {
destroyedMeteors = append(destroyedMeteors, i)
view.score++
}
}
// for each destroyed meteor, remove it from the meteors slice
for _, i := range destroyedMeteors {
view.meteors = append(view.meteors[:i], view.meteors[i+1:]...)
}
// present the updated frame to the player
renderer.Present()
// add new meteors depending on the difficulty and ticks since
// last meteor was added
if view.meteorTimer > 100 {
newMeteor := spawnMeteor()
view.meteors = append(view.meteors, newMeteor)
view.meteorTimer = rand.Intn(30) + view.difficulty
if view.difficulty < 60 {
view.difficulty += 3
}
}
view.meteorTimer++
return
}
示例8: run
//.........这里部分代码省略.........
sdl.Do(func() {
renderer.Clear()
})
defer func() {
sdl.Do(func() {
renderer.Destroy()
})
}()
go func() {
println("goroutine: A")
}()
sdl.Do(func() {
renderer.SetDrawColor(255, 255, 255, 255)
renderer.DrawPoint(150, 300)
println("queue: A")
})
go func() {
println("goroutine: B")
}()
sdl.Do(func() {
renderer.SetDrawColor(0, 0, 255, 255)
renderer.DrawLine(0, 0, 200, 200)
println("queue: B")
})
go func() {
println("goroutine: C")
}()
sdl.Do(func() {
points = []sdl.Point{{0, 0}, {100, 300}, {100, 300}, {200, 0}}
renderer.SetDrawColor(255, 255, 0, 255)
renderer.DrawLines(points)
println("queue: C")
})
go func() {
println("goroutine: D")
}()
sdl.Do(func() {
rect = sdl.Rect{300, 0, 200, 200}
renderer.SetDrawColor(255, 0, 0, 255)
renderer.DrawRect(&rect)
println("queue: D")
})
go func() {
println("goroutine: E")
}()
sdl.Do(func() {
rects = []sdl.Rect{{400, 400, 100, 100}, {550, 350, 200, 200}}
renderer.SetDrawColor(0, 255, 255, 255)
renderer.DrawRects(rects)
println("queue: E")
})
go func() {
println("goroutine: F")
}()
sdl.Do(func() {
rect = sdl.Rect{250, 250, 200, 200}
renderer.SetDrawColor(0, 255, 0, 255)
renderer.FillRect(&rect)
println("queue: F")
})
go func() {
println("goroutine: G")
}()
sdl.Do(func() {
rects = []sdl.Rect{{500, 300, 100, 100}, {200, 300, 200, 200}}
renderer.SetDrawColor(255, 0, 255, 255)
renderer.FillRects(rects)
println("queue: G")
})
go func() {
println("goroutine: H")
}()
sdl.Do(func() {
renderer.Present()
println("queue: H")
})
sdl.Do(func() {
sdl.Delay(2000)
})
return 0
}
示例9: run
func run() int {
var window *sdl.Window
var renderer *sdl.Renderer
var err error
sdl.Do(func() {
window, err = sdl.CreateWindow(WindowTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, WindowWidth, WindowHeight, sdl.WINDOW_OPENGL)
})
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err)
return 1
}
defer func() {
sdl.Do(func() {
window.Destroy()
})
}()
sdl.Do(func() {
renderer, err = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
})
if err != nil {
fmt.Fprint(os.Stderr, "Failed to create renderer: %s\n", err)
return 2
}
defer func() {
sdl.Do(func() {
renderer.Destroy()
})
}()
sdl.Do(func() {
renderer.Clear()
})
for i := range rects {
rects[i] = sdl.Rect{
X: int32(rand.Int() % WindowWidth),
Y: int32(i * WindowHeight / len(rects)),
W: RectWidth,
H: RectHeight,
}
}
running := true
for running {
sdl.Do(func() {
for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
switch event.(type) {
case *sdl.QuitEvent:
runningMutex.Lock()
running = false
runningMutex.Unlock()
}
}
renderer.Clear()
renderer.SetDrawColor(0, 0, 0, 0x20)
renderer.FillRect(&sdl.Rect{0, 0, WindowWidth, WindowHeight})
})
// Do expensive stuff using goroutines
wg := sync.WaitGroup{}
for i := range rects {
wg.Add(1)
go func(i int) {
rects[i].X = (rects[i].X + 10) % WindowWidth
sdl.Do(func() {
renderer.SetDrawColor(0xff, 0xff, 0xff, 0xff)
renderer.DrawRect(&rects[i])
})
wg.Done()
}(i)
}
wg.Wait()
sdl.Do(func() {
renderer.Present()
sdl.Delay(1000 / FrameRate)
})
}
return 0
}
示例10: Render
//.........这里部分代码省略.........
var init int32 = 0
var Source *sdl.Rect
var ofX, ofY int32 = tileSize, tileSize
renderer.SetDrawColor(0, 0, 0, 255)
// Rendering the map
for sh := init; sh < s.Window.Height; sh += ofY {
for sw := init; sw < s.Window.Width; sw += ofX {
ofX = (tileSize - ((s.Cam.WX + sw) % tileSize))
ofY = (tileSize - ((s.Cam.WY + sh) % tileSize))
var worldCellX uint16 = uint16((s.Cam.WX + sw) / tileSize)
var worldCellY uint16 = uint16((s.Cam.WY + sh) / tileSize)
// Draw black box for out of bounds areas
if worldCellX < 0 || worldCellX > s.WidthCells || worldCellY < 0 || worldCellY > s.HeightCells {
renderer.FillRect(&sdl.Rect{sw, sh, ofX, ofY})
continue
}
rect := Object{
Pos: sdl.Rect{sw, sh, ofX, ofY},
}
for _, gfx := range s.World[worldCellX][worldCellY].Gfxs {
if gfx != nil {
if gfx.Txtr == nil {
continue
}
if ofX != int32(tileSize) || ofY != int32(tileSize) {
Source = &sdl.Rect{gfx.Source.X + (tileSize - ofX), gfx.Source.Y + (tileSize - ofY), ofX, ofY}
} else {
Source = gfx.Source
}
renderer.Copy(s.TsTxt, Source, &rect.Pos)
}
}
// Updating CullM with SOLID/COLLIDABLE terrain types
if s.World[worldCellX][worldCellY].Coll {
// fabricate fake SOL obj
tempO := &Object{
Pos: rect.Pos,
Gfx: nil,
Type: SOL,
}
s.CullM.Add(tempO, s)
}
}
}
// Rendering the enemies
for _, e := range s.Enemies {
in, e_pos := s.CullM.Add(e, s)
if in {
renderer.Copy(s.SsTxt, e.GetPose(), &e_pos)
}
}
// Rendering the player character
pos := WorldToScreen(s.PC.Pos, s.Cam)
renderer.Copy(s.SsTxt, s.PC.GetPose(), &pos)
// Rendering FRAME RATE COUNTER
fps := fmt.Sprintf("%v", s.GetFPS())
surface, _ := s.Font.RenderUTF8_Solid(fps, sdl.Color{255, 255, 255, 255})
defer surface.Free()
txtr, _ := renderer.CreateTextureFromSurface(surface)
defer txtr.Destroy()
renderer.Copy(txtr, &sdl.Rect{0, 0, surface.W, surface.H}, &sdl.Rect{0, 0, surface.W, surface.H})
// Rendering Game Objects
for _, obj := range s.Objects {
in, obj_pos := s.CullM.Add(obj, s)
if in {
renderer.SetDrawColor(255, 0, 0, 125)
renderer.FillRect(&obj_pos)
}
}
// Rendering GUI Blocks
for _, gb := range s.GUIBlocks {
renderer.Copy(gb.Baked, gb.Pos, gb.Pos)
}
renderer.Present()
}
示例11: play
func play(seq *video.VideoSequence) {
var window *sdl.Window
var renderer *sdl.Renderer
var texture *sdl.Texture
var err error
window, err = sdl.CreateWindow(winTitle,
sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED,
winWidth, winHeight,
sdl.WINDOW_SHOWN)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create window: %s\n", err)
os.Exit(1)
}
defer window.Destroy()
renderer, err = sdl.CreateRenderer(window, -1, sdl.RENDERER_ACCELERATED)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create renderer: %s\n", err)
os.Exit(2)
}
defer renderer.Destroy()
seq.AlignTo(video.SequenceHeaderStartCode)
var pointer unsafe.Pointer
var pitch int
var yLen int
var cLen int
sdl.Delay(1000)
renderer.Present()
for {
img, err := seq.Next()
if err == io.EOF {
break
}
if err != nil {
fmt.Fprintf(os.Stderr, "Decoding error: %s\n", err)
os.Exit(3)
}
if texture == nil {
w, h := seq.Size()
yLen = w * h
cLen = (w * h) >> 2
texture, err = renderer.CreateTexture(sdl.PIXELFORMAT_IYUV, sdl.TEXTUREACCESS_STREAMING, w, h)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", err)
os.Exit(4)
}
defer texture.Destroy()
}
{
texture.Lock(nil, &pointer, &pitch)
// Convert pointer to []uint8
pixels := *(*[]uint8)(unsafe.Pointer(&reflect.SliceHeader{
Data: uintptr(pointer),
Len: yLen + 2*cLen,
Cap: yLen + 2*cLen,
}))
// Select color planes
y := pixels[0:yLen]
cb := pixels[yLen : yLen+cLen]
cr := pixels[yLen+cLen : yLen+cLen+cLen]
// Copy image data into texture
copy(y, img.Y)
copy(cb, img.Cb)
copy(cr, img.Cr)
texture.Unlock()
}
err = renderer.Copy(texture, nil, nil)
if err != nil {
fmt.Fprintf(os.Stderr, "Copy failed: %s\n", err)
os.Exit(5)
}
renderer.Present()
}
}