From 859d247093b9cf9ac11862e2bbc7d5dc31ea03eb Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Sat, 21 Nov 2020 22:43:05 +0900 Subject: [PATCH] graphicsdriver/opengl: Refactoring --- .../graphicsdriver/opengl/context_desktop.go | 5 ++-- internal/graphicsdriver/opengl/context_js.go | 25 ++++++++----------- .../graphicsdriver/opengl/context_mobile.go | 5 ++-- internal/graphicsdriver/opengl/gl/package.go | 13 +++++----- internal/graphicsdriver/opengl/gles/const.go | 13 +++++----- internal/graphicsdriver/opengl/types.go | 7 +++--- 6 files changed, 30 insertions(+), 38 deletions(-) diff --git a/internal/graphicsdriver/opengl/context_desktop.go b/internal/graphicsdriver/opengl/context_desktop.go index e700fab1e..6996020d7 100644 --- a/internal/graphicsdriver/opengl/context_desktop.go +++ b/internal/graphicsdriver/opengl/context_desktop.go @@ -83,7 +83,6 @@ const ( fragmentShader = shaderType(gl.FRAGMENT_SHADER) arrayBuffer = bufferType(gl.ARRAY_BUFFER) elementArrayBuffer = bufferType(gl.ELEMENT_ARRAY_BUFFER) - dynamicDraw = bufferUsage(gl.DYNAMIC_DRAW) short = dataType(gl.SHORT) float = dataType(gl.FLOAT) @@ -390,7 +389,7 @@ func (c *context) newArrayBuffer(size int) buffer { var b uint32 gl.GenBuffers(1, &b) gl.BindBuffer(uint32(arrayBuffer), b) - gl.BufferData(uint32(arrayBuffer), size, nil, uint32(dynamicDraw)) + gl.BufferData(uint32(arrayBuffer), size, nil, gl.DYNAMIC_DRAW) return buffer(b) } @@ -398,7 +397,7 @@ func (c *context) newElementArrayBuffer(size int) buffer { var b uint32 gl.GenBuffers(1, &b) gl.BindBuffer(uint32(elementArrayBuffer), b) - gl.BufferData(uint32(elementArrayBuffer), size, nil, uint32(dynamicDraw)) + gl.BufferData(uint32(elementArrayBuffer), size, nil, gl.DYNAMIC_DRAW) return buffer(b) } diff --git a/internal/graphicsdriver/opengl/context_js.go b/internal/graphicsdriver/opengl/context_js.go index 3cd5a9e15..b6a437059 100644 --- a/internal/graphicsdriver/opengl/context_js.go +++ b/internal/graphicsdriver/opengl/context_js.go @@ -78,9 +78,6 @@ const ( fragmentShader = shaderType(gles.FRAGMENT_SHADER) arrayBuffer = bufferType(gles.ARRAY_BUFFER) elementArrayBuffer = bufferType(gles.ELEMENT_ARRAY_BUFFER) - dynamicDraw = bufferUsage(gles.DYNAMIC_DRAW) - streamDraw = bufferUsage(gles.STREAM_DRAW) - pixelUnpackBuffer = bufferType(gles.PIXEL_UNPACK_BUFFER) short = dataType(gles.SHORT) float = dataType(gles.FLOAT) @@ -431,7 +428,7 @@ func (c *context) newArrayBuffer(size int) buffer { gl := c.gl b := gl.Call("createBuffer") gl.Call("bindBuffer", int(arrayBuffer), js.Value(b)) - gl.Call("bufferData", int(arrayBuffer), size, int(dynamicDraw)) + gl.Call("bufferData", int(arrayBuffer), size, gles.DYNAMIC_DRAW) return buffer(b) } @@ -439,7 +436,7 @@ func (c *context) newElementArrayBuffer(size int) buffer { gl := c.gl b := gl.Call("createBuffer") gl.Call("bindBuffer", int(elementArrayBuffer), js.Value(b)) - gl.Call("bufferData", int(elementArrayBuffer), size, int(dynamicDraw)) + gl.Call("bufferData", int(elementArrayBuffer), size, gles.DYNAMIC_DRAW) return buffer(b) } @@ -513,16 +510,16 @@ func (c *context) texSubImage2D(t textureNative, width, height int, args []*driv func (c *context) newPixelBufferObject(width, height int) buffer { gl := c.gl b := gl.Call("createBuffer") - gl.Call("bindBuffer", int(pixelUnpackBuffer), js.Value(b)) - gl.Call("bufferData", int(pixelUnpackBuffer), 4*width*height, int(streamDraw)) - gl.Call("bindBuffer", int(pixelUnpackBuffer), nil) + gl.Call("bindBuffer", gles.PIXEL_UNPACK_BUFFER, js.Value(b)) + gl.Call("bufferData", gles.PIXEL_UNPACK_BUFFER, 4*width*height, gles.STREAM_DRAW) + gl.Call("bindBuffer", gles.PIXEL_UNPACK_BUFFER, nil) return buffer(b) } func (c *context) replacePixelsWithPBO(buffer buffer, t textureNative, width, height int, args []*driver.ReplacePixelsArgs) { c.bindTexture(t) gl := c.gl - gl.Call("bindBuffer", int(pixelUnpackBuffer), js.Value(buffer)) + gl.Call("bindBuffer", gles.PIXEL_UNPACK_BUFFER, js.Value(buffer)) stride := 4 * width for _, a := range args { @@ -530,7 +527,7 @@ func (c *context) replacePixelsWithPBO(buffer buffer, t textureNative, width, he jsutil.CopySliceToJS(arr, a.Pixels) offset := 4 * (a.Y*width + a.X) for j := 0; j < a.Height; j++ { - gl.Call("bufferSubData", int(pixelUnpackBuffer), offset+stride*j, arr, 4*a.Width*j, 4*a.Width) + gl.Call("bufferSubData", gles.PIXEL_UNPACK_BUFFER, offset+stride*j, arr, 4*a.Width*j, 4*a.Width) } } @@ -538,14 +535,14 @@ func (c *context) replacePixelsWithPBO(buffer buffer, t textureNative, width, he // GLsizei width, GLsizei height, // GLenum format, GLenum type, GLintptr offset); gl.Call("texSubImage2D", gles.TEXTURE_2D, 0, 0, 0, width, height, gles.RGBA, gles.UNSIGNED_BYTE, 0) - gl.Call("bindBuffer", int(pixelUnpackBuffer), nil) + gl.Call("bindBuffer", gles.PIXEL_UNPACK_BUFFER, nil) } func (c *context) getBufferSubData(buffer buffer, width, height int) []byte { gl := c.gl - gl.Call("bindBuffer", int(pixelUnpackBuffer), buffer) + gl.Call("bindBuffer", gles.PIXEL_UNPACK_BUFFER, buffer) arr := jsutil.TemporaryUint8Array(4 * width * height) - gl.Call("getBufferSubData", int(pixelUnpackBuffer), 0, arr) - gl.Call("bindBuffer", int(pixelUnpackBuffer), 0) + gl.Call("getBufferSubData", gles.PIXEL_UNPACK_BUFFER, 0, arr) + gl.Call("bindBuffer", gles.PIXEL_UNPACK_BUFFER, 0) return jsutil.Uint8ArrayToSlice(arr) } diff --git a/internal/graphicsdriver/opengl/context_mobile.go b/internal/graphicsdriver/opengl/context_mobile.go index d18910a32..600c5ba4a 100644 --- a/internal/graphicsdriver/opengl/context_mobile.go +++ b/internal/graphicsdriver/opengl/context_mobile.go @@ -81,7 +81,6 @@ const ( fragmentShader = shaderType(gles.FRAGMENT_SHADER) arrayBuffer = bufferType(gles.ARRAY_BUFFER) elementArrayBuffer = bufferType(gles.ELEMENT_ARRAY_BUFFER) - dynamicDraw = bufferUsage(gles.DYNAMIC_DRAW) short = dataType(gles.SHORT) float = dataType(gles.FLOAT) @@ -358,14 +357,14 @@ func (c *context) disableVertexAttribArray(p program, index int) { func (c *context) newArrayBuffer(size int) buffer { b := c.ctx.GenBuffers(1)[0] c.ctx.BindBuffer(uint32(arrayBuffer), b) - c.ctx.BufferData(uint32(arrayBuffer), size, nil, uint32(dynamicDraw)) + c.ctx.BufferData(uint32(arrayBuffer), size, nil, gles.DYNAMIC_DRAW) return buffer(b) } func (c *context) newElementArrayBuffer(size int) buffer { b := c.ctx.GenBuffers(1)[0] c.ctx.BindBuffer(uint32(elementArrayBuffer), b) - c.ctx.BufferData(uint32(elementArrayBuffer), size, nil, uint32(dynamicDraw)) + c.ctx.BufferData(uint32(elementArrayBuffer), size, nil, gles.DYNAMIC_DRAW) return buffer(b) } diff --git a/internal/graphicsdriver/opengl/gl/package.go b/internal/graphicsdriver/opengl/gl/package.go index 5537dc15d..512875114 100644 --- a/internal/graphicsdriver/opengl/gl/package.go +++ b/internal/graphicsdriver/opengl/gl/package.go @@ -19,10 +19,6 @@ const ( FRAGMENT_SHADER = 0x8B30 ARRAY_BUFFER = 0x8892 ELEMENT_ARRAY_BUFFER = 0x8893 - DYNAMIC_DRAW = 0x88E8 - STREAM_DRAW = 0x88E0 - PIXEL_PACK_BUFFER = 0x88EB - PIXEL_UNPACK_BUFFER = 0x88EC SHORT = 0x1402 FLOAT = 0x1406 @@ -34,13 +30,12 @@ const ( ONE_MINUS_DST_ALPHA = 0x0305 DST_COLOR = 0x0306 - FALSE = 0 - TRUE = 1 - BLEND = 0x0BE2 CLAMP_TO_EDGE = 0x812F COLOR_ATTACHMENT0 = 0x8CE0 COMPILE_STATUS = 0x8B81 + DYNAMIC_DRAW = 0x88E8 + FALSE = 0 FRAMEBUFFER = 0x8D40 FRAMEBUFFER_BINDING = 0x8CA6 FRAMEBUFFER_COMPLETE = 0x8CD5 @@ -49,8 +44,11 @@ const ( MAX_TEXTURE_SIZE = 0x0D33 NEAREST = 0x2600 NO_ERROR = 0 + PIXEL_PACK_BUFFER = 0x88EB + PIXEL_UNPACK_BUFFER = 0x88EC READ_WRITE = 0x88BA RGBA = 0x1908 + STREAM_DRAW = 0x88E0 TEXTURE0 = 0x84C0 TEXTURE_2D = 0x0DE1 TEXTURE_MAG_FILTER = 0x2800 @@ -58,6 +56,7 @@ const ( TEXTURE_WRAP_S = 0x2802 TEXTURE_WRAP_T = 0x2803 TRIANGLES = 0x0004 + TRUE = 1 SCISSOR_TEST = 0x0C11 UNPACK_ALIGNMENT = 0x0CF5 UNSIGNED_BYTE = 0x1401 diff --git a/internal/graphicsdriver/opengl/gles/const.go b/internal/graphicsdriver/opengl/gles/const.go index 508402bd5..7e00ddb8c 100644 --- a/internal/graphicsdriver/opengl/gles/const.go +++ b/internal/graphicsdriver/opengl/gles/const.go @@ -20,10 +20,6 @@ const ( FRAGMENT_SHADER = 0x8B30 ARRAY_BUFFER = 0x8892 ELEMENT_ARRAY_BUFFER = 0x8893 - DYNAMIC_DRAW = 0x88E8 - STREAM_DRAW = 0x88E0 - PIXEL_PACK_BUFFER = 0x88EB - PIXEL_UNPACK_BUFFER = 0x88EC SHORT = 0x1402 FLOAT = 0x1406 @@ -35,13 +31,12 @@ const ( ONE_MINUS_DST_ALPHA = 0x0305 DST_COLOR = 0x0306 - FALSE = 0 - TRUE = 1 - BLEND = 0x0BE2 CLAMP_TO_EDGE = 0x812F COLOR_ATTACHMENT0 = 0x8CE0 COMPILE_STATUS = 0x8B81 + DYNAMIC_DRAW = 0x88E8 + FALSE = 0 FRAMEBUFFER = 0x8D40 FRAMEBUFFER_BINDING = 0x8CA6 FRAMEBUFFER_COMPLETE = 0x8CD5 @@ -51,9 +46,12 @@ const ( MAX_TEXTURE_SIZE = 0x0D33 NEAREST = 0x2600 NO_ERROR = 0 + PIXEL_PACK_BUFFER = 0x88EB + PIXEL_UNPACK_BUFFER = 0x88EC READ_WRITE = 0x88BA RGBA = 0x1908 SCISSOR_TEST = 0x0C11 + STREAM_DRAW = 0x88E0 TEXTURE0 = 0x84C0 TEXTURE_2D = 0x0DE1 TEXTURE_MAG_FILTER = 0x2800 @@ -61,6 +59,7 @@ const ( TEXTURE_WRAP_S = 0x2802 TEXTURE_WRAP_T = 0x2803 TRIANGLES = 0x0004 + TRUE = 1 UNPACK_ALIGNMENT = 0x0CF5 UNSIGNED_BYTE = 0x1401 UNSIGNED_SHORT = 0x1403 diff --git a/internal/graphicsdriver/opengl/types.go b/internal/graphicsdriver/opengl/types.go index 86692efd4..f9898a4b5 100644 --- a/internal/graphicsdriver/opengl/types.go +++ b/internal/graphicsdriver/opengl/types.go @@ -19,10 +19,9 @@ import ( ) type ( - shaderType int - bufferType int - bufferUsage int - operation int + shaderType int + bufferType int + operation int ) type dataType int