本文整理汇总了Golang中github.com/veandco/go-sdl2/sdl.Renderer.Copy方法的典型用法代码示例。如果您正苦于以下问题:Golang Renderer.Copy方法的具体用法?Golang Renderer.Copy怎么用?Golang Renderer.Copy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/veandco/go-sdl2/sdl.Renderer
的用法示例。
在下文中一共展示了Renderer.Copy方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: DrawItem
func (m *Menu) DrawItem(renderer *sdl.Renderer, index int) {
var text_surface *sdl.Surface
var text_texture *sdl.Texture
var text_width, text_height int32
var text_rect sdl.Rect
var screen_width, _, _ int = renderer.GetRendererOutputSize()
for index, menu_item := range m.menu_items {
if index == m.selected_item {
text_surface = m.font.RenderText_Solid(menu_item.text, *m.selected_color)
} else {
text_surface = m.font.RenderText_Solid(menu_item.text, *m.unselected_color)
}
text_width = text_surface.W
text_height = text_surface.H
text_texture = renderer.CreateTextureFromSurface(text_surface)
text_rect = sdl.Rect{
int32(screen_width) - 10 - text_width, //X position
(m.font_size_32 * int32(index)),
text_width,
text_height,
}
renderer.Copy(text_texture, nil, &text_rect)
}
}
示例2: Bake
func (gb *GUIBlock) Bake(renderer *sdl.Renderer) *sdl.Texture {
finalTxtr, _ := renderer.CreateTexture(sdl.PIXELFORMAT_RGBA8888, sdl.TEXTUREACCESS_TARGET, 800, 600)
originalTarget := renderer.GetRenderTarget()
renderer.SetRenderTarget(finalTxtr)
defer renderer.SetRenderTarget(originalTarget)
renderer.SetDrawColor(1, 1, 1, 0)
renderer.FillRect(gb.Pos)
for _, el := range gb.Elements {
println("Baking: ")
println(el.Layer, el.Pos.X, el.Pos.Y)
renderer.SetDrawColor(el.BGColor.R, el.BGColor.G, el.BGColor.B, el.BGColor.A)
renderer.FillRect(el.Pos)
for _, txt := range el.Texts {
texture, W, H := txt.Bake(renderer)
renderer.Copy(
texture,
&sdl.Rect{0, 0, W, H},
&sdl.Rect{el.Pos.X + txt.RelPos.X, el.Pos.Y + txt.RelPos.Y, W, H})
}
}
finalTxtr.SetBlendMode(sdl.BLENDMODE_BLEND)
finalTxtr.SetAlphaMod(216)
return finalTxtr
}
示例3: Draw
func (s *AnimatedSprite) Draw(renderer *sdl.Renderer) {
src_rect := s.Src_rects[s.current_frame]
dest_rect := &sdl.Rect{
int32(s.X),
int32(s.Y),
src_rect.W,
src_rect.H,
}
renderer.Copy(s.Texture, src_rect, dest_rect)
}
示例4: 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
}
示例5: 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()
}
示例6: 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)
}
示例7: Draw
func (t *Label) Draw(renderer *sdl.Renderer) {
surface, err := t.font.RenderUTF8_Solid(t.text, sdl.Color{255, 255, 255, 255})
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create surface: %s\n", err)
os.Exit(1)
}
texture, err := renderer.CreateTextureFromSurface(surface)
if err != nil {
fmt.Fprintf(os.Stderr, "Failed to create texture: %s\n", err)
os.Exit(1)
}
src := &sdl.Rect{0, 0, surface.W, surface.H}
dst := &sdl.Rect{t.rect.X, t.rect.Y, src.W, src.H}
renderer.Copy(texture, src, dst)
surface.Free()
}
示例8: DrawTitle
func (m *Menu) DrawTitle(renderer *sdl.Renderer) {
var text_surface *sdl.Surface
var text_texture *sdl.Texture
var text_width, text_height int32
var title_rect sdl.Rect
var _, screen_height, _ int = renderer.GetRendererOutputSize()
text_surface = m.title_font.RenderText_Solid(m.menu_title, *m.title_color)
text_width = text_surface.W
text_height = text_surface.H
text_texture = renderer.CreateTextureFromSurface(text_surface)
title_rect = sdl.Rect{
20, //X position
int32(screen_height) - 20 - text_height, //Y position
text_width,
text_height,
}
renderer.Copy(text_texture, nil, &title_rect)
}
示例9: Draw
func (t *TitleState) Draw(renderer *sdl.Renderer) {
renderer.Copy(t.currentTexture(), &t.src, &t.dest)
}
示例10: Draw
func (p *Player) Draw(renderer *sdl.Renderer) {
renderer.Copy(p.Texture, p.Src_rect, &sdl.Rect{int32(p.X), int32(p.Y), p.Src_rect.W, p.Src_rect.H})
}
示例11: WriteOnScreen
func (t *TestState) WriteOnScreen(renderer *sdl.Renderer, text string, X int32, Y int32) {
text_surface := t.font.RenderText_Solid(text, sdl.Color{255, 255, 255, 255})
text_texture := renderer.CreateTextureFromSurface(text_surface)
renderer.Copy(text_texture, nil, &sdl.Rect{X, Y, text_surface.W, text_surface.H})
}
示例12: Draw
func (s *Sprite) Draw(renderer *sdl.Renderer) {
renderer.Copy(s.Texture, s.Src_rect, &sdl.Rect{s.X, s.Y, s.Src_rect.W, s.Src_rect.H})
}
示例13: Render
func (s *Scene) Render(renderer *sdl.Renderer) {
// Empty CullM
s.CullM.Zero()
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)
//.........这里部分代码省略.........
示例14: 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()
}
}