Problema de filter lineal con líneas diagonales en azulejos adjetivos

Soy bastante nuevo en el uso de OpenGL / GLSL. Básicamente, el proyecto en el que estoy trabajando es mi primera experiencia 'real' con él. No sé si esto es relevante, pero utilizo libgdx para mi proyecto.

Actualmente, estoy tratando de usar los filters GL_LINEAR para dibujar el mosaico de mi map (mosaico) (antes de usar GL_NEAREST sin problemas).

Mi map contiene carreteras diagonales (solo líneas simples en este ejemplo). Una visión general / ejemplo parcial de mi map (usando el filter más cercano sin correcciones):

mapa parcial

Con el filter GL_NEAREST , inicialmente agregué un borde de 1 píxel, por lo que las teselas se superponían ligeramente y las calles diagonales se dibujaban sin los pequeños huecos en los bordes de las teselas.

Esto no funciona con el filter GL_LINEAR , porque supongo que las partes superpuestas se dibujan dos veces, lo que da como resultado un "blob" más oscuro:

manchas

Traté de deshacerme de los blobs, haciendo que las líneas horizontales sean más cortas, pero siempre hay una irregularidad, ya sea una mancha o una 'disminución del ancho de la línea' (como se ve en la parte diagonal de la línea).

Así que eliminé el borde adicional de 1 píxel y obtuve esto como resultado:

fea carretera diagonal

Ahora estoy tratando de completar los "vacíos" dibujando los dos rellenos triangulares de esta manera:

2 rellenos triangulares

pero no puedo entenderlo del todo bien (esto es lo mejor que logré):

camino diagonal algo mejor

Supongo que es virtualmente imposible hacer esto perfectamente al dibujar 'manualmente' estos triangularjs. Además, al mirar la tercera image, las líneas en los "bordes" (que deben llenarse) son muy nítidas. Supongo que esto es problemático …

Entonces, mi pregunta es: ¿cómo se resuelve este problema? ¿Necesito preparar / modificar mis texturas para esto? ¿Puedo usar un sombreador para llenar los espacios automáticamente? ¿Llenar manualmente las lagunas con los triangularjs es el path a seguir? ¿O hay alguna técnica completamente diferente para tener líneas diagonales lisas que abarcan múltiples mosaicos?

Desafortunadamente, el problema no tiene esperanza tal como está. No se puede filtrar de forma aceptable en los límites sin que cada tesela sea más consciente de sus vecinos. Recomiendo cambiar la forma en que dibujas las fichas.

Esto es lo que deberías hacer. En primer lugar, renderice sus teselas en un framebuffer fuera de pantalla a razón de 1: 1 (usando GL_NEAREST , que ya funciona para usted). A continuación, renderice la textura resultante para seleccionar la relación de escala deseada (utilizando GL_LINEAR para un filtrado adecuado).