mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-26 10:42:42 +01:00
jsutil: Reduce calls of (js.Value).Get
(js.Value).Get invokes the string conversion from UTF-8 to UTF-16. This is related to #1438, though this is not a fix in the OpenGL driver. Updates #1438
This commit is contained in:
parent
517cf29ddc
commit
e95cccad21
@ -28,27 +28,34 @@ var (
|
||||
// temporaryArrayBuffer is a temporary buffer used at gl.readPixels or gl.texSubImage2D.
|
||||
// The read data is converted to Go's byte slice as soon as possible.
|
||||
// To avoid often allocating ArrayBuffer, reuse the buffer whenever possible.
|
||||
temporaryArrayBuffer = arrayBuffer.New(16)
|
||||
temporaryArrayBuffer = arrayBuffer.New(16)
|
||||
temporaryArrayBufferByteLength = temporaryArrayBuffer.Get("byteLength")
|
||||
|
||||
// temporaryUint8Array is a Uint8ArrayBuffer whose underlying buffer is always temporaryArrayBuffer.
|
||||
temporaryUint8Array = uint8Array.New(temporaryArrayBuffer)
|
||||
temporaryUint8Array = uint8Array.New(temporaryArrayBuffer)
|
||||
temporaryUint8ArrayByteLength = temporaryUint8Array.Get("byteLength")
|
||||
|
||||
// temporaryFloat32Array is a Float32ArrayBuffer whose underlying buffer is always temporaryArrayBuffer.
|
||||
temporaryFloat32Array = float32Array.New(temporaryArrayBuffer)
|
||||
temporaryFloat32Array = float32Array.New(temporaryArrayBuffer)
|
||||
temporaryFloat32ArrayByteLength = temporaryFloat32Array.Get("byteLength")
|
||||
)
|
||||
|
||||
func ensureTemporaryArrayBufferSize(byteLength int) {
|
||||
if bufl := temporaryArrayBuffer.Get("byteLength").Int(); bufl < byteLength {
|
||||
bufl := temporaryArrayBufferByteLength.Int()
|
||||
if bufl < byteLength {
|
||||
for bufl < byteLength {
|
||||
bufl *= 2
|
||||
}
|
||||
temporaryArrayBuffer = arrayBuffer.New(bufl)
|
||||
temporaryArrayBufferByteLength = temporaryArrayBuffer.Get("byteLength")
|
||||
}
|
||||
if temporaryUint8Array.Get("byteLength").Int() < temporaryArrayBuffer.Get("byteLength").Int() {
|
||||
if temporaryUint8ArrayByteLength.Int() < bufl {
|
||||
temporaryUint8Array = uint8Array.New(temporaryArrayBuffer)
|
||||
temporaryUint8ArrayByteLength = temporaryUint8Array.Get("byteLength")
|
||||
}
|
||||
if temporaryFloat32Array.Get("byteLength").Int() < temporaryArrayBuffer.Get("byteLength").Int() {
|
||||
if temporaryFloat32ArrayByteLength.Int() < bufl {
|
||||
temporaryFloat32Array = float32Array.New(temporaryArrayBuffer)
|
||||
temporaryFloat32ArrayByteLength = temporaryFloat32Array.Get("byteLength")
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user