Skip to content

Commit 270c5db

Browse files
committed
add some more transform feedback help to state-diagram
1 parent ca702ba commit 270c5db

File tree

1 file changed

+45
-1
lines changed

1 file changed

+45
-1
lines changed

webgl/lessons/resources/webgl-state-diagram/transform-feedback-ui.js

+45-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,22 @@ export function createTransformFeedbackDisplay(parent, name /*, transformFeedbac
3232
const tfElem = createTemplate(parent, '#transform-feedback-template');
3333
setName(tfElem, name);
3434
const tfNote = helpToMarkdown(`
35+
A transform feedback is an object that contains a set of outputs from a vertex shader.
36+
It is the opposite of a vertex array. A vertex array lists the inputs to a vertex shader.
37+
A transform feedback lists the outputs.
38+
39+
In your shader you declare outputs. Before linking the shaders into a program
40+
you call --gl.transformFeedbackVaryings-- to tell it which shader outputs will
41+
be written. You then use a transform feedback to set which buffers the outputs
42+
will be written to.
43+
44+
The current transform feedback is set with --gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, someTransformFeedback)--.
45+
46+
You create a transform feedback with --gl.createTransformFeedback()--
47+
48+
You bind it as above, and then use --gl.bufferBindBase-- or --gl.bufferBindRange-- to
49+
tell it which buffers to write to and where in those buffers to write.
50+
3551
`);
3652
const attrExpander = createExpander(tfElem.querySelector('.state-table'), 'varyings');
3753
expand(attrExpander);
@@ -46,7 +62,16 @@ export function createTransformFeedbackDisplay(parent, name /*, transformFeedbac
4662
textContent: '0',
4763
dataset: {
4864
help: helpToMarkdown(`
49-
where in the buffer to start reading or writing data.
65+
where in the buffer to start writing data.
66+
67+
---js
68+
gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, someTransformFeedback)
69+
// if using the entire buffer (sets OFFSET to 0)
70+
gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, ${i}, someBuffer)
71+
// else, if using a portion of a buffer
72+
gl.bindBufferRange(gl.TRANSFORM_FEEDBACK_BUFFER, ${i}, someBuffer, OFFSET, size);
73+
----
74+
5075
${tfNote}`),
5176
},
5277
});
@@ -55,6 +80,15 @@ export function createTransformFeedbackDisplay(parent, name /*, transformFeedbac
5580
dataset: {
5681
help: helpToMarkdown(`
5782
how much of the buffer to use
83+
84+
---js
85+
gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, someTransformFeedback)
86+
// if using the entire buffer (sets SIZE to the size of someBuffer)
87+
gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, ${i}, someBuffer)
88+
// else, if using a portion of a buffer
89+
gl.bindBufferRange(gl.TRANSFORM_FEEDBACK_BUFFER, ${i}, someBuffer, offset, SIZE);
90+
----
91+
5892
${tfNote}`),
5993
},
6094
});
@@ -63,6 +97,16 @@ export function createTransformFeedbackDisplay(parent, name /*, transformFeedbac
6397
dataset: {
6498
help: helpToMarkdown(`
6599
The buffer that will receive data
100+
101+
---js
102+
gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, someTransformFeedback)
103+
// if using the entire buffer (sets BUFFER to someBuffer)
104+
gl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, ${i}, someBuffer)
105+
// else, if using a portion of a BUFFER to someBuffer
106+
gl.bindBufferRange(gl.TRANSFORM_FEEDBACK_BUFFER, ${i}, someBuffer, offset, size);
107+
----
108+
109+
66110
${tfNote}`),
67111
},
68112
});

0 commit comments

Comments
 (0)