Izhido

03-26-2001, 04:02 PM

From the OpenGL 1.2 spec, Appendix B (Corollaries):

"17. (No pixel dropouts or duplicates). Let two polygons share an identical edge (that

is, there exist vertices A and B of an edge of one polygon, and vertices C and D of an

edge of the other polygon, and the coordinates of vertex A (resp. B) are

identical to those of vertex C (resp. D) and the state of the coordinate transformations

is identical when A, B, C, and D are specified). Then, when the fragments

produced by rasterization of both polygons are taken together, each fragment

intersecting the interior of the shared edge is produced exactly once."

To put it simple, no two polygon edges can be drawn twice.

However, I was wondering about the actual extent of this requirement. One possible

implementation would check all the polygons sent to the GL, flagging for each one which

edges should be drawn and which ones not. My question is: To what extent this check should be made?

A. Until glFlush() ?

B. Until glFinish() ?

C. Until glClear(GL_COLOR_BUFFER_BIT ...) ?

D. None of the above? (Which one, then?)

E. Invalid algorithm, should be replaced with another way to ensure that requirement?

- Heriberto Delgado

(heribertod@ruteo.com)

"17. (No pixel dropouts or duplicates). Let two polygons share an identical edge (that

is, there exist vertices A and B of an edge of one polygon, and vertices C and D of an

edge of the other polygon, and the coordinates of vertex A (resp. B) are

identical to those of vertex C (resp. D) and the state of the coordinate transformations

is identical when A, B, C, and D are specified). Then, when the fragments

produced by rasterization of both polygons are taken together, each fragment

intersecting the interior of the shared edge is produced exactly once."

To put it simple, no two polygon edges can be drawn twice.

However, I was wondering about the actual extent of this requirement. One possible

implementation would check all the polygons sent to the GL, flagging for each one which

edges should be drawn and which ones not. My question is: To what extent this check should be made?

A. Until glFlush() ?

B. Until glFinish() ?

C. Until glClear(GL_COLOR_BUFFER_BIT ...) ?

D. None of the above? (Which one, then?)

E. Invalid algorithm, should be replaced with another way to ensure that requirement?

- Heriberto Delgado

(heribertod@ruteo.com)