¿Qué tiene de malo el GL QUADS?


He oído que GL_QUADS se eliminarán en las versiones de OpenGL > 3.0, ¿por qué? ¿Mis viejos programas no funcionarán en el futuro entonces? He benchmarked, y GL_TRIANGLES o GL_QUADS no tienen ninguna diferencia en la velocidad de renderizado (incluso podría ser que GL_QUADS es más rápido). Entonces, ¿cuál es el punto?

Author: Vallentin, 2011-07-11

3 answers

El punto es que tu GPU renderiza triángulos, no quads. Y es bastante trivial construir un rectángulo a partir de dos triángulos, por lo que la API no necesita estar sobrecargada con la capacidad de renderizar cuádruples de forma nativa. OpenGL está pasando por un importante proceso de recorte, cortando una gran cantidad de funcionalidad que tenía sentido hace 15 años, pero ya no coincide con cómo funciona la GPU, o cómo la GPU siempre va a trabajar. La tubería de la función fija se ha ido de las últimas versiones también, I cree, porque, una vez más, ya no es necesario, y ya no coincide con cómo funciona la GPU (shaders programables).

El punto es que cuanto más pequeña y ajustada sea la API de OpenGL, más fácil será para los proveedores escribir controladores robustos y de alto rendimiento, y más fácil será aprender a usar la API de manera correcta y eficiente.

Hace unos años, prácticamente cualquier cosa en OpenGL se podía hacer de 3 a 5 maneras diferentes, lo que suponía una gran carga para el desarrollador cuál implementación es la correcta si desea un rendimiento óptimo.

Así que están tratando de optimizar la API.

 76
Author: jalf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-10 22:23:29

La gente ya ha respondido bastante bien a tu pregunta. Además de su respuesta, una de las razones por las que GL_QUADS está en desuso es debido a la naturaleza indefinida de los quads.

Por ejemplo, intente modelar un cuadrado 2d con puntos (0,0,0), (1,0,0), (1,1,1), (0,1,0). Este es un quad plano con una esquina arrastrada hacia arriba. No es posible dibujar un cuadrado plano normal de tal manera. Dependiendo de los conductores, se dividirá en 2 triángulos de una u otra manera, que no podemos controlar. Tal modelo DEBE ser modelado con dos triangulo. - Los tres puntos de un triángulo siempre se encuentran en un mismo plano.

 8
Author: yaMum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-09 07:12:44

No "va" a ser nada. Al igual que con muchas otras funcionalidades, GL_QUADS fue obsoleto en la versión 3.0 y eliminado en la versión 3.1. Obviamente, todo esto es irrelevante si se crea un contexto de compatibilidad.

Cualquier respuesta que alguien pueda dar por la razón de desaprobarlos sería pura especulación.

 8
Author: Nicol Bolas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-23 04:43:40