Tôi có một trình đổ bóng với bộ đồng phục _color và một bộ lấy mẫu. Bây giờ tôi muốn vẽ với _color ONLY nếu mẫu không được thiết lập. Có cách nào để nhận ra rằng trong bóng râm của chúng ta? (Thật không may mẫu thử trả về 1,1,1,1 khi không được gán, mà làm cho nó trộn qua alpha không thể)Làm thế nào để kiểm tra xem một sampler là null trong glsl?
Trả lời
Bạn không thể làm điều đó. Các mẫu là một xử lý đục mà chỉ tham chiếu một đơn vị kết cấu. Tôi không chắc chắn nếu spec đảm bảo rằng (1,1,1,1) khi lấy mẫu từ một đơn vị mà không có kết cấu bị ràng buộc, hoặc nếu đó là hành vi không xác định.
Những gì bạn có thể làm là chỉ sử dụng một bộ đồng phục khác để chuyển đổi betwenn bằng cách sử dụng mẫu hoặc màu đồng nhất hoặc chỉ sử dụng các trình đổ bóng khác nhau và chuyển đổi giữa chúng. Ngoài ra còn có các khả năng của chương trình con ở đây, nhưng tôi không biết liệu đó có phải là thẩm định đúng cho một vấn đề đơn giản như vậy hay không.
Tôi đã vấp phải câu hỏi này đang cố giải quyết vấn đề tương tự.
Kể từ GLSL 4,30
int textureQueryLevels(gsamplerX sampler);
Là một chức năng xây dựng-in. Trong thông số GLSL. p. 151 nó nói
Giá trị 0 sẽ được trả lại nếu không có kết cấu hoặc kết cấu không hoàn chỉnh được liên kết với mẫu.
Trong OpenGL-Forms Tôi tìm thấy một entry cho câu hỏi này gợi ý để sử dụng
ivecY textureSize(gsamplerX sampler,int lod);
và thử nghiệm nếu kích thước kết cấu là lớn hơn không. Nhưng đây là, theo hiểu biết của tôi, không được đề cập trong tiêu chuẩn. Trong phần 11.1.3.4 của đặc tả OpenGL người ta nói rằng
Nếu mức hình ảnh kết cấu tính toán nằm ngoài phạm vi [levelbase, q], kết quả là không xác định ...
Sửa : Tôi chỉ thử phương pháp này trên vấn đề của mình và hóa ra nvidia có một số vấn đề với hàm này, dẫn đến giá trị không bằng 0 khi không có kết cấu nào bị ràng buộc. (Xem nvidia bug report từ năm 2015)
- 1. Làm thế nào để kiểm tra xem một struct là NULL trong C hoặc C++
- 2. Làm thế nào để kiểm tra xem một Datatable là Null hoặc Không có gì
- 3. Làm thế nào để kiểm tra xem một đôi là null?
- 4. Làm thế nào tôi có thể kiểm tra xem một mảng là null/empty?
- 5. Làm thế nào để kiểm tra null trong Twig?
- 6. Làm thế nào để kiểm tra xem giá trị DataRow là null
- 7. Làm thế nào để kiểm tra xem con trỏ hàm truyền từ C là NULL không
- 8. Boost.Test kiểm tra xem một con trỏ là null
- 9. jsoncpp làm thế nào để kiểm tra xem thẻ là null .isNull() ném khẳng định
- 10. Làm thế nào để kiểm tra một biến giá trị null nếu nó là một chuỗi?
- 11. Làm thế nào để xem nếu một phần tử là null trong một mảng trong C?
- 12. Kiểm tra xem chuỗi không phải là NULL hoặc EMPTY
- 13. Kiểm tra xem getJSONArray là null hay không
- 14. Làm thế nào để kiểm tra xem một loại là chuỗi trong C#?
- 15. Làm thế nào để kiểm tra xem hệ thống là FreeBSD trong một kịch bản python?
- 16. Trong Python, làm thế nào để kiểm tra xem một dòng là cuối cùng?
- 17. Làm thế nào để kiểm tra xem biến là một lớp cụ thể trong python?
- 18. Làm thế nào để kiểm tra xem một kiểu generic là nil trong Swift
- 19. Làm thế nào để kiểm tra xem một loại là một typedef int
- 20. Django: Làm thế nào để kiểm tra xem widget trường là hộp kiểm trong mẫu?
- 21. Làm cách nào để bạn kiểm tra trình kiểm tra OpenGL được viết bằng GLSL?
- 22. Làm thế nào để kiểm tra xem một mảng byte là một hình ảnh hợp lệ?
- 23. làm thế nào để kiểm tra xem một file jar là hợp lệ?
- 24. Làm thế nào để kiểm tra xem một mảng kết hợp có một sản phẩm nào hoặc giá trị null
- 25. Làm thế nào để kiểm tra xem một chuỗi là một uniqueidentifier?
- 26. ios kiểm tra xem NSArray == null
- 27. Java: Kiểm tra xem đối số dòng lệnh là null
- 28. Cách tốt nhất để kiểm tra xem một danh sách không phải là null?
- 29. Làm thế nào để kiểm tra xem một biến hoặc đối tượng là không xác định?
- 30. Làm thế nào để kiểm tra xem một phần tử trong mảng tồn tại trong Java