Jak utworzyć linię (prawdopodobnie kolorową) za pomocą shaderów? Używam programowanego potoku i jestem początkującym użytkownikiem openGL. Nie mogę znaleźć przykładu, jak rysować linie za pomocą shaderów. Przypuszczam, że muszę załadować VAO (obiekt tablicy wierzchołków) do modułu cieniującego, ale co dalej? Jakie funkcje powinienem użyć i jak?openGL: linie z shaderami
14
A
Odpowiedz
9
Najpierw użyj programu cieniowania. Następnie narysuj linie przy użyciu glDrawArrays (lub elementów, jeśli dane są indeksowane) w trybie = GL_LINES lub w jednym z pozostałych trybów rysowania linii.
Oto przykład kodu dla linii 2D o różnych kolorach na każdym końcu. Jeśli tryb cieniowania jest ustawiony na gładki, OpenGL będzie interpolować kolory wzdłuż linii.
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);
Jeśli potrzebujesz większej elastyczności, można rysować linie za pomocą trójkątów, tworząc prostokąt (4 punkty) z punktów końcowych linii. W 2D możesz utworzyć 4 punkty, tłumacząc punkty końcowe za pomocą linii normalnej/prostopadłej (-y, x) za pomocą pożądanej linii. W 3D musisz upewnić się, że trójkąty są wyrównane do kamery, tak jak w przypadku billboardowania.
Powiązane problemy
- 1. Jak narysować połączone linie paska w OpenGL w ten sposób
- 2. OpenGL lub OpenGL ES
- 3. Czytaj linie z pliku tekstowego, ale pomiń pierwsze dwie linie.
- 4. KineticJS - linie rysunkowe z myszą
- 5. Ucieczka nowe linie z JS
- 6. NixOS, Haskell, opengl: problemy z budowaniem i uruchamianiem programów OpenGL
- 7. linie rozdzielające z "z INFILE w python
- 8. Testowanie głębokości Z w OpenGL
- 9. Podstawowy trójkąt LWJGL z OpenGL
- 10. prawdziwa projekcja izometryczna z opengl
- 11. Przykładowa gra z OpenGL 2d
- 12. Kluczowanie kolorem z openframeworks/opengl
- 13. Kłopoty z Native OpenGL Renderer
- 14. Rysowanie prostokąta prostokątnego OpenGL
- 15. Mgła OpenGL a mgła OpenGL ES
- 16. Powtarzanie tekstur w OpenGL
- 17. Problem z korzystaniem z OpenGL VBO
- 18. Suwaki obsługujące OpenGL ES i OpenGL
- 19. SubTexturing openGL
- 20. Jak pominąć linie nagłówka pre z csv.DictReader?
- 21. bash wyciągnąć pewne linie z pliku
- 22. Usunąć zduplikowane linie z pliku tekstowego?
- 23. Skutecznie rozwiń linie z pand DataFrame
- 24. s3cmd count linie z zcat i grep
- 25. jak narysować linie siatki z libgdx
- 26. Jak przeplatać linie z dwóch plików tekstowych
- 27. Usuń linie graniczne z QFrame i QTabWidget
- 28. Jak osadzić tylko niektóre linie z istoty?
- 29. ProgressBar Temat z ukośne linie dekoratora
- 30. Jak czytać linie z bloków w Kabeja?
Czy wiesz, jak narysować trójkąty? To naprawdę nie inaczej, po prostu podajesz GL_LINES zamiast GL_TRIANGLES do glDrawArrays/glDrawElements – Tim
dowolny przykładowy kod? –