| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Copyright 2016 The G3N Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package texture
- import (
- "github.com/g3n/engine/gls"
- "github.com/g3n/engine/math32"
- )
- // NewBoard creates and returns a pointer to a new checker board 2D texture.
- // A checker board texture contains up to 4 different colors arranged in
- // the following order:
- // +------+------+
- // | | |
- // | c3 | c4 |
- // | | |
- // +------+------+
- // | | |
- // | c1 | c2 | height (pixels)
- // | | |
- // +------+------+
- // width
- // (pixels)
- //
- func NewBoard(width, height int, c1, c2, c3, c4 *math32.Color, alpha float32) *Texture2D {
- // Generates texture data
- data := make([]float32, width*height*4*4)
- colorData := func(sx, sy int, c *math32.Color) {
- for y := sy; y < sy+height; y++ {
- for x := sx; x < sx+width; x++ {
- pos := (x + y*2*width) * 4
- data[pos] = c.R
- data[pos+1] = c.G
- data[pos+2] = c.B
- data[pos+3] = alpha
- }
- }
- }
- colorData(0, 0, c1)
- colorData(width, 0, c2)
- colorData(0, height, c3)
- colorData(width, height, c4)
- // Creates, initializes and returns board texture object
- return NewTexture2DFromData(width*2, height*2, gls.RGBA, gls.FLOAT, gls.RGBA8, data)
- }
|