Pregunta

Tengo una red de polilíneas, y me gustaría mostrar todas las partes de las líneas que están dentro de una determinada caja X-Y. Actualmente estoy renderizando las líneas en OpenGL usando un GL_LINE_STRIP y funciona bien. Sin embargo, si el límite del cuadro X-Y cruza una de las líneas (entre los vértices), ¿hay una buena manera de mostrar la parte de la línea que está dentro del cuadro?

gracias,

Jeff

¿Fue útil?

Solución

Si su caja es simplemente un rectángulo alineado, bidimensional y ordinario, puede usar la función glScissor. En pocas palabras, define un rectángulo 2D en coordenadas de pantalla donde se lleva a cabo todo el dibujo.

Si su caso es más complicado (por ejemplo, puede tener un rectángulo en un plano dentro de una escena 3D más o menos ...), primero puede dibujar su rectángulo en el búfer de la plantilla y habilitar la prueba de la plantilla para el renderizado de líneas. Ese enfoque le brinda una flexibilidad ilimitada sobre la forma que restringe el dibujo, pero puede ser un poco más lento durante el renderizado y requiere más esfuerzo para la instalación.

Otros consejos

Creo que Nils Pipenbrinck te dio las dos mejores opciones, pero lanzaré otra para completar: clip planos ( glClipPlane () ).

Dicho esto, creo que glScissor () es la solución más fácil si siempre estará alineada con la ventana.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top