@@ -32,6 +32,22 @@ export function createTransformFeedbackDisplay(parent, name /*, transformFeedbac
32
32
const tfElem = createTemplate ( parent , '#transform-feedback-template' ) ;
33
33
setName ( tfElem , name ) ;
34
34
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
+
35
51
` ) ;
36
52
const attrExpander = createExpander ( tfElem . querySelector ( '.state-table' ) , 'varyings' ) ;
37
53
expand ( attrExpander ) ;
@@ -46,7 +62,16 @@ export function createTransformFeedbackDisplay(parent, name /*, transformFeedbac
46
62
textContent : '0' ,
47
63
dataset : {
48
64
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
+
50
75
${ tfNote } ` ) ,
51
76
} ,
52
77
} ) ;
@@ -55,6 +80,15 @@ export function createTransformFeedbackDisplay(parent, name /*, transformFeedbac
55
80
dataset : {
56
81
help : helpToMarkdown ( `
57
82
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
+
58
92
${ tfNote } ` ) ,
59
93
} ,
60
94
} ) ;
@@ -63,6 +97,16 @@ export function createTransformFeedbackDisplay(parent, name /*, transformFeedbac
63
97
dataset : {
64
98
help : helpToMarkdown ( `
65
99
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
+
66
110
${ tfNote } ` ) ,
67
111
} ,
68
112
} ) ;
0 commit comments