Renderice el model con mallas con materiales y / o texturas

Estoy haciendo una class de model que está usando Assimp en el background. Quiero que las mallas de mis models puedan tener un material y una textura opcional además de eso.

En este momento lo estoy haciendo así: para cada malla, almaceno la position, normal y texCoord para cada vértice en esa malla. Si la malla no tiene una textura, simplemente agrego vec2 (0.0, 0.0) a texCoord-array. Necesitaba agregar valores en blanco para las mallas que no tienen texturas, por lo que el desplazamiento de las mallas que tiene texturas sería correcto.

Al principio pensé que esto funcionaría. Para dibujar las mallas, utilizo el mismo progtwig de sombreado para las mallas sin texturas y las que tienen texturas. Pero dado que no se vinculará ninguna textura cuando renderizo las que no tienen texturas, se tomarán muestras de tex-colors de nada (?) Y se producirá un parpadeo.

Entonces mi pregunta es, ¿cuál sería una buena manera de resolver esto? ¿Es posible tener dos progtwigs de sombreado y cambiar entre ellos dependiendo de si el model tiene una textura?

Podrías tener dos shaders separados. Una buena forma de hacer esto sería crear un object Material que contuviera pointers a algún sombreador y tal vez una textura (los resources deberían almacenarse dentro de un ResourceManager o algo similar).

Pero si eso es demasiado trabajo, siempre puedes usar una textura especial que siempre existe para objects con texturas faltantes.

enter image description here