Tôi làm cách nào để tạo một đường kẻ (có thể tô màu) với trình đổ bóng? Tôi đang sử dụng đường ống lập trình và tôi là người mới bắt đầu với OpenGL. Tôi không thể tìm thấy một ví dụ về làm thế nào để vẽ đường với shaders .. Tôi cho rằng tôi phải tải một VAO (đỉnh mảng đối tượng) vào bóng đổ, nhưng sau đó những gì? Tôi nên sử dụng những chức năng nào và làm thế nào?openGL: đường kẻ có bóng đổ
14
A
Trả lời
9
Trước tiên, hãy đặt sử dụng chương trình shader. Sau đó vẽ các đường bằng cách sử dụng glDrawArrays (hoặc Phần tử nếu dữ liệu của bạn được lập chỉ mục) với chế độ = GL_LINES hoặc một trong các chế độ vẽ đường khác.
Dưới đây là ví dụ về mã cho các dòng 2D có màu khác nhau ở mỗi đầu. Nếu chế độ tô bóng được đặt là mượt mà, OpenGL sẽ nội suy các màu dọc theo đường kẻ.
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);
Nếu bạn cần linh hoạt hơn, bạn có thể vẽ đường bằng hình tam giác bằng cách tạo hình chữ nhật (4 điểm) từ điểm cuối dòng. Trong 2D, bạn có thể tạo 4 điểm bằng cách dịch các điểm cuối bằng cách sử dụng đường thẳng/vuông góc (-y, x) theo dòng mong muốn bằng. Trong 3D, bạn cần đảm bảo các hình tam giác được căn chỉnh với máy ảnh như trong bảng.
Các vấn đề liên quan
- 1. Có thể vẽ độ dày đường kẻ trong một trình đổ bóng phân đoạn không?
- 2. Lập bản đồ bóng OpenGL với FBO - vẽ nhiều đường kẻ
- 3. Có thể biết phiên bản OpenGL có phải là OpenGL ES trong mã trình đổ bóng không?
- 4. Làm cách nào để có hiệu ứng đổ bóng "Glow" trong OpenGL ES 2.0?
- 5. Dòng kết cấu mượt mà với các bóng đổ OpenGL ES 2.0
- 6. Tùy chỉnh UIPopoverBackgroundView: không có bóng đổ
- 7. Gửi dữ liệu xương tới bóng đổ bóng mờ
- 8. Trong trình đổ bóng đỉnh OpenGL, w là gì và tại sao tôi chia nó?
- 9. Yếu tố có thể có bóng đổ bóng và chèn bóng cùng một lúc không?
- 10. Hiệu ứng đổ bóng UIBezierpath - iOs
- 11. Hiệu ứng đổ bóng WPF
- 12. Hiệu ứng đổ bóng Raphael
- 13. Thêm bóng đổ vào UITableView
- 14. OpenGL ES: đổ bóng phẳng mà không cần sao chép đỉnh?
- 15. Cách tốt nhất để phát hiện NaN trong bóng đổ OpenGL
- 16. Cách gỡ lỗi trình đổ bóng trên Android
- 17. Vượt qua các ma trận tăng cường uBLAS tới trình đổ bóng OpenGL
- 18. Các vấn đề về đổ bóng của Opengl - hiện vật phản chiếu ánh sáng kỳ lạ
- 19. iOS: Cách thêm bóng đổ và bóng đổ nét trên UIView?
- 20. TForm không biên giới với bóng đổ
- 21. Tạo bộ lọc mờ với trình đổ bóng - truy cập các pixel liền kề từ trình đổ bóng phân đoạn?
- 22. Làm cách nào để trình đổ bóng vertex chuyển thông tin màu vào trình đổ bóng phân đoạn?
- 23. UIBezierPath Nhiều Màu Đường kẻ
- 24. Tạo văn bản có bóng đổ trong AS3
- 25. Hai div có bóng đổ trên cùng một mức
- 26. Trình đổ bóng đoạn OpenGL ES có thể thay đổi giá trị độ sâu của một đoạn không?
- 27. CSS làm mờ hiệu ứng ngang/hiệu ứng đường kẻ ngang mà không có hình ảnh
- 28. Hiệu ứng đổ bóng iPhone xcode 4.1
- 29. Thêm bóng đổ vào UIWebView và UITextView
- 30. Biên dịch bóng đổ trong PyQt
Bạn có biết cách vẽ hình tam giác không? Nó thực sự không khác nhau, bạn chỉ cần chỉ định GL_LINES thay vì GL_TRIANGLES để glDrawArrays/glDrawElements – Tim
bất kỳ mã ví dụ nào? –