¿Cómo crearía una línea (posiblemente de color) con sombreadores? Estoy usando canal programable y soy un principiante con OpenGL. No puedo encontrar un ejemplo sobre cómo dibujar líneas con sombreadores ... Supongo que tengo que cargar un VAO (objeto de matriz de vértices) en el sombreador, pero ¿entonces qué? ¿Qué funciones debería usar y cómo?openGL: líneas con sombreadores
Respuesta
Primero, configure use el programa shader. Luego dibuje líneas usando glDrawArrays (o Elementos si sus datos están indexados) con mode = GL_LINES o uno de los otros modos de dibujo de líneas.
Aquí hay un ejemplo de código para líneas 2D con diferentes colores en cada extremo. Si el modo de sombreado está configurado como uniforme, OpenGL interpolará los colores a lo largo de la línea.
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);
Si necesita más flexibilidad, puede dibujar líneas con triángulos mediante la creación de un rectángulo (4 puntos) de los puntos finales de línea. En 2D puede crear los 4 puntos traduciendo los puntos finales usando la línea normal/perpendicular (-y, x) con la línea deseada. En 3D, debes asegurarte de que los triángulos estén alineados con la cámara, como en el caso de las carteleras.
- 1. OpenGL ES y sombreadores compatibles con OpenGL
- 2. Línea de textura suave con sombreadores OpenGL ES 2.0
- 3. Organizar sombreadores GLSL en el motor OpenGL
- 4. framebuffer y uso de sombreadores en opengl
- 5. Creación de sombreadores OpenGL en NativeActivity
- 6. Perfilado del rendimiento de los sombreadores OpenGL
- 7. Modo de fusión de Photoshop con OpenGL ES sin sombreadores
- 8. OpenGL: Dibujar líneas con VBO
- 9. La mejor manera de detectar NaN en sombreadores OpenGL
- 10. Dibujando líneas con OpenGL en Haskell
- 11. Dibujar líneas punteadas con OpenGL-ES
- 12. Uso de QPainter sobre OpenGL en QGLWidget al utilizar sombreadores
- 13. Sombreadores sombreadores de píxeles con salidas múltiples en flash?
- 14. Cómo depurar sombreadores en Android
- 15. Sombreadores en lugar de GPGPU
- 16. Cómo usar sombreadores personalizados junto con GLKit
- 17. ¿Cómo deben escribirse los sombreadores modernos de OpenGL para que sean compatibles entre sí?
- 18. OpenGL - máscara con múltiples texturas
- 19. Cómo crear sombras rápidas y fáciles, independientes de la escena, sin sombreadores en OpenGL
- 20. Ejemplos de sombreadores OpenGL ES 2.0 para el procesamiento de imágenes?
- 21. En los sombreadores de vértices OpenGL, ¿qué es w, y por qué lo divido?
- 22. GLKit's GLKBaseEffect y sombreadores personalizados
- 23. Filtro gaussiano con OpenGL Shaders
- 24. Representación de OpenGL ES 2.0 con una textura
- 25. Relleno de líneas de escaneo Algoritmo OpenGL/GLUT en C++
- 26. OpenGL ES iPhone - el trazado de líneas anti-aliasing
- 27. opengl - mezcla con contenido anterior de framebuffer
- 28. Animal de peluche En OpenGL
- 29. OpenGL: ¿Cuál es el problema con la depreciación?
- 30. OpenGL, primitivas con opacidad sin superposición visible
¿Sabes cómo dibujar triángulos? Realmente no es diferente, solo especifica GL_LINES en lugar de GL_TRIANGLES para glDrawArrays/glDrawElements – Tim
¿Algún código de ejemplo? –