Я использую glDrawArrays (GL_POINTS, ...) для рисования гармонической волны.
Точки не имеют поверхности.
Я хотел бы знать,порядок, в котором поверхности (треугольники?) генерируются openGL при рендеринге на основе вершин и таким образом вычисляются площади поверхности?Могу ли я это сделать, и если да, то как.
OpenGL не генерирует трагические ошибки.Растеризует треугольники, которые вы отправляете.В том же порядке, в котором вы их указали.glDrawArrays(mode, first, count)
ведет себя точно так же, как
myDrawArrays(GLenum mode, GLuint first, GLuint count)
{
GLuint *indices = malloc(count * sizeof(GLuint));
/* just assume malloc never fails, OpenGL doesn't have to alloc here, of course) */
for(int i=0; i<count; i++)
indices[i] = first + i;
glDrawElements(mode, count, GL_UNSIGNED_INT, indices);
free(indices);
}
Примитивы растеризуются в указанном порядке.
Таким образом, вы хотите знать площадь поверхности, но рисуететочки.Как уже говорилось, точки (математически) не имеют поверхности.Однако они охватывают как минимум один (суб) пиксель.Так может ли быть так, что вы действительно хотите знать покрытие пикселей ?
Тогда OpenGL предоставляет вам метод, называемый «запрос окклюзии», с помощью которого он возвращает вам, сколько (screen / framebuffer)пиксели были затронуты путем рисования примитивов в запросе.
http://www.opengl.org/registry/specs/ARB/occlusion_query.txt