Comments (3)
A big issue is how opinionated twgl should be here. I feel like it might be best if instancing only worked with vertex array objects. Why? Because if you don't use vertex array objects then twgl would have to reset the divisor on all attributes. Given vertex array objects are supported almost everywhere (pretty much only IE11) it would be best not to over complicate twgl to handle the case when not using vertex array objects?
OR? Maybe it doesn't matter. TWGL should just call vertexAttribDivisor
if you specify a divisor
on the attribute and it's up to you to deal with the consequences if you don't use a vertex array object. In other words you'd need to put divisor: 0
if you want twgl to reset the divisor for other draw calls when not using vertex array objects.
The other issue which I don't have a good solution for is how to handle the extension in WebGL1. You need to somehow tell twgl about the extension. Currently twgl is almost completely stateless. Except for a few defaults. But, to use the ANGLE_instanced_arrays
extension requires either
-
twgl look it up every time on use
that would seem like it would be too slow
-
have twgl require you to register the extension with twgl
problem then is you can't support 2 contexts unless you manually register
the correct context before expecting twgl to use it -
have twgl add it to the WebGLRenderingContext.
maybe something like
twgl.setDefault({ addExtensionsOnContext: true })
In which case TWGL would just copy as many extensions as it can/supports
directly to the WebGLRenderingContext under their WebGL2 names. For example
if you'd be able to usegl.createVertexArray
instead ofextension.createVertexArrayOES
twgl would then use those features if enabled or maybe that should just be the default
and if you don't want that you usetwgl.setDefault({ addExtensionsOnContext: false })
I guess I'm leaning toward #3. It would mean any compatible WebGL2 code would just work
from twgl.js.
I ended up doing # 3 above and added the function twgl.addExtensionsToContext
which you can call to manually enable and add all the extensions. I then added support for instancing. I'll try to whip up an example before I push it
from twgl.js.
okay I checked in 3.6.0 that supports instancing
https://github.com/greggman/twgl.js/releases/tag/v3.6.0
And also an instancing sample
http://twgljs.org/examples/instancing.html
from twgl.js.
Related Issues (20)
- Dynamically changing attribute values, does it require to create bufferinfo everytime
- Last framebuffer's attached texture is empty? HOT 3
- Incorrect sentence structure.
- GPGPU particles example performance HOT 5
- resizeCanvasToDisplaySize in a web worker sets the width and height to 0 HOT 2
- Should not update the number of elements too HOT 1
- Question about simple triangle rendering HOT 1
- Inconsistent `type` type in `createAttribsFromArrays` HOT 8
- Defer checking shader compile status HOT 8
- Unsetting a texture in webgl2 HOT 3
- gl.useProgram(program); HOT 1
- bindTransformFeedbackInfo with offset HOT 3
- Get the jsdoc into the tsd HOT 2
- Incorrect TypeScript types of `createAugmentedTypedArray` HOT 2
- TEXTURE_COMPARE_MODE and sampler2DShadow HOT 4
- twgl-base package.json refers to non-existent `module` file HOT 2
- Cubemap uses only first texture HOT 3
- Rendering objects using drawObjectList causes skybox to not be rendered HOT 6
- `opt_locations` of createProgramInfo is missing from typescript bindings HOT 2
- webgpu support ? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from twgl.js.