@@ -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