Come si crea una linea (eventualmente colorata) con ombreggiatori? Sto usando una pipeline programmabile e sono un principiante con openGL. Non riesco a trovare un esempio su come disegnare linee con shader. Suppongo di dover caricare un VAO (oggetto array di vertici) nello shader, ma poi? Quali funzioni dovrei usare e come?openGL: linee con ombreggiatori
risposta
Per prima cosa impostare utilizzando il programma shader. Quindi traccia le linee usando glDrawArrays (o Elementi se i tuoi dati sono indicizzati) con la modalità = GL_LINES o una delle altre modalità di disegno a tratteggio.
Ecco un esempio di codice per linee 2D con colori diversi a ciascuna estremità. Se la modalità shading è impostata su smooth, OpenGL interpola i colori lungo la linea.
struct LineSegment_t
{
float x1, y1;
float r1,g1,b1,a1;
float x2, y2;
float r2,g2,b2,a2;
};
int num_verts = lines.size()*2;
glBindVertexArray(line_vao); // setup for the layout of LineSegment_t
glBindBuffer(GL_ARRAY_BUFFER, LineBufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(LineSegment_t)/2 * num_verts, &lines[0], GL_DYNAMIC_DRAW);
glDrawArrays(GL_LINES, 0, num_verts);
Se avete bisogno di una maggiore flessibilità, è possibile disegnare linee utilizzando triangoli con la creazione di un rettangolo (4 punti) dai punti finali della linea. In 2D è possibile creare i 4 punti traducendo i punti finali usando la linea normale/perpendicolare (-y, x) della linea desiderata con. In 3D è necessario assicurarsi che i triangoli siano allineati alla telecamera come nei cartelloni pubblicitari.
- 1. Filtro gaussiano con ombreggiatori OpenGL
- 2. Linea testurizzata uniforme con ombreggiatori OpenGL ES 2.0
- 3. Disegno di linee con opengl in Haskell
- 4. Disegno linee tratteggiate con OpenGL-ES
- 5. OpenGL ES iPhone - disegnare linee anti-aliasing
- 6. Come creare ombre facili e indipendenti dalla scena senza ombreggiatori in OpenGL
- 7. Calcolo per scopi generici con ombreggiatori Vertex/Pixel (Open GL/DirectX)
- 8. Cosa sono gli ombreggiatori Vertex e Pixel?
- 9. Come disegnare linee di strisce collegate in OpenGL come questa
- 10. OpenGL è retrocompatibile con OpenGL ES?
- 11. Animale di pezza in OpenGL
- 12. Pulitura memoria GPU OpenGL, richiesta?
- 13. Come disegnare linee morbide in scena 2D con OpenGL senza utilizzare GL_LINE_SMOOTH?
- 14. Come disegnare una mesh wireframe con le linee nascoste rimosse in OpenGL ES?
- 15. Come utilizzare uno shader per colorare le linee disegnate con GL_LINES e OpenGL ES 2.0
- 16. Compatibilità con OpenGL Indietro
- 17. screensaver Xcode con openGL
- 18. OpenGL + Qt con CMake
- 19. Display video con openGL
- 20. OpenGL Ottenere shader collegato al programma
- 21. OpenGL o OpenGL ES
- 22. OpenGL disegna contorno rettangolo
- 23. Rappresentazione grafica dinamica con openGL in Android
- 24. Modifica di un'immagine con OpenGL?
- 25. Problema con glBindBufferRange() OpenGL 3.1
- 26. Uso di OpenGL con Python
- 27. proiezione isometrica vera con opengl
- 28. Iniziare con OpenGL ... in Android
- 29. Utilizzo di OpenGl con C#?
- 30. chroma key con openframeworks/opengl
Sai come disegnare triangoli? In realtà non è diverso, basta specificare GL_LINES invece di GL_TRIANGLES in glDrawArrays/glDrawElements – Tim
qualsiasi codice di esempio? –