Open ianromanick opened 3 years ago
The etymology of the 10.3.6 paragraph is interesting, as the quirk appears to have arisen between 4.4 and 4.5.
In 4.4, the sentence was specifically about the fixed-index form:
If
PRIMITIVE_RESTART_FIXED_INDEX
is enabled, primitive restart is not performed for array elements transferred by any drawing command not taking a type parameter, includingArrayElement
and all of the*Draw*
commands other than*DrawElements*
.
This makes sense, as the fixed index is defined in terms of the type
provided, and functions that provide no such type could use it.
But in 4.5, it was separated from the previous sentence into its own paragraph and expanded, essentially as you quoted.
It seems that all versions of the fixed-index restart have the "I don't care about DrawRange functions" issue, including the actual extension specification that brought it up. This makes sense, as it was part of ES3 compatibility, and ES doesn't have the range drawing functions.
That being said, the change of paragraph from 4.4 to 4.5 may have been to address the question of what restarting means for array rendering. This is important, because restarting is based on the vertex ID at vertex reading time, and both indexed and array rendering functions have those. In 4.5 core, the paragraph says that array drawing functions don't provoke any restarting, even if the vertex ID happens to equal the fixed or specified index.
Section 10.7.4 (Transferring Vertices With ArrayElement) says:
But section 10.3.6 (Primitive Restart) says;
glArrayElement
subject to primitive restart or not? The two spec quotations say the opposite thing.glDrawRangeElements
subject to primitive restart or not? Section 10.3.6 seems to exclude it, but I doubt that was intended.