Commit Graph

3584 Commits

Author SHA1 Message Date
seebs
74e204d952 graphics: Speed up DrawTriangles (#723)
DrawTriangles is expensive and slow because of massive memory
allocation and garbage collection costs. This patch moves from ~47TPS
on my laptop (with ~24k triangles) to 60TPS. The first part
is just allocating the right size of vertex buffer up front; that
got to about 55TPS. The second part replaces the frequent
allocations of []float32 in Vertex() calls with writing the
desired values into a provided destination slice.

Time spent in drawing triangles for 1,000 frames:
	13.07s	baseline
	11.09s	preallocate whole buffer to avoid resizing
	6.13s	use new PutVertex function

This might need some cleanup, but I think it's good evidence that
the design change is viable.
2018-10-31 10:53:17 +09:00
Hajime Hoshi
45017213a7 opengl: Unexport (Element)ArrayBufferSubData 2018-10-31 00:59:44 +09:00
Hajime Hoshi
5be08cac19 opengl: Unexport BindBuffer 2018-10-30 23:59:20 +09:00
Hajime Hoshi
23a832c0a7 opengl: Unexport consts 2018-10-30 22:41:05 +09:00
Hajime Hoshi
99594fe732 opengl: Remove type mode 2018-10-30 22:36:12 +09:00
Hajime Hoshi
b2b09ccec0 restorable: Avoid memory allocating when an entire image is cleared 2018-10-30 11:08:38 +09:00
Hajime Hoshi
bb0b8ca83b opengl: Unexport (*Context).Reset() 2018-10-30 02:18:10 +09:00
Hajime Hoshi
ac7bf354a9 opengl: Unexport types 2018-10-30 02:13:51 +09:00
Hajime Hoshi
e4179aee37 opengl: Unexport functions 2018-10-30 01:50:30 +09:00
Hajime Hoshi
6b95a5140c opengl: Move program.go and shader.go to opengl 2018-10-30 01:27:31 +09:00
Hajime Hoshi
ec92f61a3e graphics: Misspelling 2018-10-29 02:05:59 +09:00
Hajime Hoshi
27ee54b008 graphics: Forbid using a subimage at DrawTriangles (#727) 2018-10-29 01:37:59 +09:00
Hajime Hoshi
6b02f0ae9e graphicscommand: Move OrthoProjectionMatrix to opengl package 2018-10-29 01:08:51 +09:00
Hajime Hoshi
ce1c616f69 Merge graphics and graphicsutil 2018-10-28 23:03:06 +09:00
Hajime Hoshi
395b46d8da graphicsutil: Remove dependency on graphicscommand 2018-10-28 23:00:10 +09:00
Hajime Hoshi
7767bcfdd8 graphicsutil: Better allocation of vertices 2018-10-28 22:54:36 +09:00
Hajime Hoshi
fde9fd2d0e graphicsutil: Remove dependency on opengl 2018-10-28 22:01:59 +09:00
Hajime Hoshi
ff54d3b681 Move CompositeMode to graphics package 2018-10-28 21:49:47 +09:00
Hajime Hoshi
06f2052817 Add graphics package and move Filter to graphics 2018-10-28 20:25:52 +09:00
Hajime Hoshi
2da5192510 Rename graphics -> graphicscommand 2018-10-28 20:10:05 +09:00
Hajime Hoshi
3349a2c520 graphics: Add comments 2018-10-28 19:41:39 +09:00
Hajime Hoshi
781554ecb9 graphics: Refactoring 2018-10-28 19:35:01 +09:00
Hajime Hoshi
710f56531f graphics: Experimental: (*image.Image).SubImage
Fixes #722
2018-10-28 02:19:14 +09:00
Hajime Hoshi
41877bba0b graphics: Add image state check at DrawTriangles 2018-10-28 01:43:28 +09:00
Hajime Hoshi
170f0fcaa9 graphics: Refactoring 2018-10-28 01:39:58 +09:00
Hajime Hoshi
5f04f05cb1 graphics: Add comments 2018-10-26 03:29:20 +09:00
Hajime Hoshi
d3bd858aba graphics: Bug fix: Mipmap was not invalidated at DrawTriangle
Fixes #725
2018-10-26 02:08:18 +09:00
Hajime Hoshi
8b82667df1 graphics: Bug fix: Violating edge pixels with linear filter
Fixes #724
2018-10-26 00:48:51 +09:00
Hajime Hoshi
58f4feda8d graphics: Refactoring (preparing SubImage) 2018-10-25 12:48:24 +09:00
Hajime Hoshi
765af5a7af gofmt -s -w 2018-10-25 12:47:27 +09:00
Hajime Hoshi
ce60f44490 graphics: Add (*mipmap).original() 2018-10-25 02:11:54 +09:00
Hajime Hoshi
15cad6ed9a graphics: Rename shareableImages -> mipmap 2018-10-25 02:05:25 +09:00
Hajime Hoshi
022c40aa17 graphics: Move creating mipmap logic to shareableImages 2018-10-25 01:35:34 +09:00
Hajime Hoshi
4cd3e3ae30 Update go.mod/go.sum 2018-10-24 01:16:17 +09:00
Hajime Hoshi
7494b19dea graphics: Refactoring: Add shareableImages struct 2018-10-24 01:09:59 +09:00
Hajime Hoshi
68199f85c9 docs: Update 2018-10-18 23:19:18 +09:00
Hajime Hoshi
057c16e4eb Update go.mod 2018-10-18 23:16:40 +09:00
Hajime Hoshi
7cf85abb86 docs: Use transparent background at example iframes 2018-10-17 02:51:17 +09:00
Hajime Hoshi
6bc6c6674f docs: Update 2018-10-16 00:47:29 +09:00
Hajime Hoshi
2c9a634752 Update version to 1.9.0-alpha 2018-10-16 00:19:04 +09:00
Hajime Hoshi
d14202ef7b audio: Add Context.IsReady
Fixes #717
2018-10-16 00:02:19 +09:00
Hajime Hoshi
b6f7a0043c examples/windowsize: Show DeviceScaleFactor 2018-10-14 19:15:26 +09:00
Hajime Hoshi
7e29a81177 ui: Refactoring 2018-10-14 18:28:27 +09:00
Hajime Hoshi
443e3ae3a4 examples/windowsize: Bug fix: Strange delta of window size 2018-10-14 17:34:02 +09:00
Hajime Hoshi
0c4ef7ee8e ui: Bug fix: fix the initial window position on multiple monitors 2018-10-14 16:59:14 +09:00
Hajime Hoshi
13174cdb22 examples/flappy: Should use fullscreen on Wasm 2018-10-14 01:21:13 +09:00
Hajime Hoshi
56541a8c0a examples/blocks: Fix message 2018-10-14 00:55:27 +09:00
Hajime Hoshi
b56061281d ui: Add comments 2018-10-13 22:41:21 +09:00
Hajime Hoshi
a073f48faf input: Bug fix: keypress event were not fired
This change suspends to 'preventDefault' on keydown events.

Now preventing navigation by pressing backspace is deprecated in
Chrome. For other keys, it looks like keyup's preventDefault is
enough to disable the browser default behavior.
2018-10-13 19:18:13 +09:00
Hajime Hoshi
d6e109555d examples/blocks: Bug fix: multiple gamepad detection 2018-10-13 16:59:52 +09:00