Domanda

Vorrei creare un gioco in modalità wireframe tuttavia senza il comando glPolygoneMode non so come avrei fatto. E 'qualcosa che potrebbe codice me stesso con ciò che è disponibile? Sono completamente nuovo a OpenGL. Se qualcuno ha fatto questo e ha il frammento di codice mi piacerebbe vederlo. Ogni aiuto è apprezzato.

È stato utile?

Soluzione

In teoria si potrebbe rendere l'intera scena con GL_LINES

Altri suggerimenti

Purtroppo, potrebbe essere necessario in realtà completamente convertire la geometria primitive linea e renderli utilizzando GL_LINES . Tuttavia, è ovviamente non fatto con la semplice sostituzione GL_TRIANGLES (o altro) con GL_LINES nelle chiamate draw, si dovrà interamente riordinare le vertici per ospitare per la nuova modalità primitiva. Ciò richiede di utilizzare almeno diverse matrici di indice di chiamate glDrawElements... o, per il rendering non indicizzato (glDrawArrays...), diverse matrici vertice del tutto (anche se, nel caso in cui si ha realmente sceglie di farlo, questo potrebbe essere il momento giusto per passare a indicizzato disegno invece).

Se, invece, avete Geometry Shaders a disposizione (anche se, a quanto pare WebGL non li supporta, OpenGL ES 3.2 dovrebbe in quanto, così come desptop GL ma che non ha il buon vecchio glPolygonMode comunque) e non si dispone già usarli per qualcosa d'altro, le cose diventano più facili. In questo caso è sufficiente installare una piuttosto semplice geometry shader tra il vertice e la trasformazione frammento che prende triangoli e le uscite 3 linee per ciascuno di essi:

layout(triangles) in;
layout(line_strip, max_vertices=4) out;

void main()
{
    for(int i=0; i<4; ++i)
    {
        // and whatever other attributes of course
        gl_Position = gl_in[i%3].gl_Position;
        EmitVertex();
    }
}

Se si utilizza una corretta dello shader a blocchi a base di interfaccia, si dovrebbe essere in grado di utilizzare il vertex shader e frammenti esistenti per il resto e proprio gancio che geometry shader tra di loro per il rendering wireframe di tutti i tipi per le primitive triangolo a base di.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top