mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-24 18:58:54 +01:00
parent
045c743021
commit
899fc38d23
@ -28,10 +28,15 @@ install:
|
||||
- cd /tmp/work
|
||||
- go mod init example.com/m
|
||||
- go get github.com/hajimehoshi/ebiten@$TRAVIS_BRANCH
|
||||
- # gopath-get for the current GopherJS and gjbt.
|
||||
- # GopherJS
|
||||
- GO111MODULE=off go get -tags example github.com/hajimehoshi/ebiten/...
|
||||
- GO111MODULE=off go1.12.9 get github.com/gopherjs/gopherjs
|
||||
- # gjbt
|
||||
- GO111MODULE=off go1.12.9 get myitcv.io/cmd/gjbt
|
||||
- # wasmbrowsertest
|
||||
- go get github.com/agnivade/wasmbrowsertest
|
||||
- mv $GOPATH/bin/wasmbrowsertest $GOPATH/bin/go_js_wasm_exec
|
||||
- # Chrome
|
||||
- mkdir /tmp/google-chrome-bin
|
||||
- ln -s /usr/bin/google-chrome-stable /tmp/google-chrome-bin/google-chrome
|
||||
- export PATH=/tmp/google-chrome-bin:$PATH
|
||||
@ -46,6 +51,7 @@ script:
|
||||
- cd /tmp/work
|
||||
- go build -tags example -v github.com/hajimehoshi/ebiten/...
|
||||
- go test -v github.com/hajimehoshi/ebiten/...
|
||||
- GOOS=js GOARCH=wasm go test -v github.com/hajimehoshi/ebiten/...
|
||||
- GOOS=windows GOARCH=amd64 go build -tags example -v github.com/hajimehoshi/ebiten/...
|
||||
- GOOS=windows GOARCH=386 go build -tags example -v github.com/hajimehoshi/ebiten/...
|
||||
- GO111MODULE=off go1.12.9 run github.com/gopherjs/gopherjs build --tags example -v github.com/hajimehoshi/ebiten/examples/blocks
|
||||
|
@ -90,6 +90,11 @@ var (
|
||||
unsignedShort = contextPrototype.Get("UNSIGNED_SHORT")
|
||||
)
|
||||
|
||||
// temporaryBuffer is a temporary buffer used at gl.readPixels.
|
||||
// The read data is converted to Go's byte slice as soon as possible.
|
||||
// To avoid often allocating ArrayBuffer, reuse the buffer whenever possible.
|
||||
var temporaryBuffer = js.Global().Get("ArrayBuffer").New(16)
|
||||
|
||||
type contextImpl struct {
|
||||
gl js.Value
|
||||
lastProgramID programID
|
||||
@ -191,7 +196,14 @@ func (c *context) framebufferPixels(f *framebuffer, width, height int) ([]byte,
|
||||
|
||||
c.bindFramebuffer(f.native)
|
||||
|
||||
p := js.Global().Get("Uint8Array").New(4 * width * height)
|
||||
l := 4 * width * height
|
||||
if bufl := temporaryBuffer.Get("byteLength").Int(); bufl < l {
|
||||
for bufl < l {
|
||||
bufl *= 2
|
||||
}
|
||||
temporaryBuffer = js.Global().Get("ArrayBuffer").New(bufl)
|
||||
}
|
||||
p := js.Global().Get("Uint8Array").New(temporaryBuffer, 0, l)
|
||||
gl.Call("readPixels", 0, 0, width, height, rgba, unsignedByte, p)
|
||||
|
||||
return jsutil.Uint8ArrayToSlice(p), nil
|
||||
|
Loading…
Reference in New Issue
Block a user