2016-04-28 13 views
5

Tôi đã kiểm tra mẫu drawsubpasses trong LunarG's samples (tệp: API-Sample/drawsubpasses/drawsubpasses.cpp).Làm các thẻ stencil ghi vào bộ đệm màu?

Trong ví dụ này, thẻ phụ hiện hoạt khi vkCmdDraw() đầu tiên được gọi, không có tệp đính kèm màu mà chỉ có tệp đính kèm chiều sâu/stencil. Trình đổ bóng phân đoạn được sử dụng không có biến đầu ra.

Đọc số spec không giúp tôi hiểu việc sử dụng này có "an toàn" không hay cách người lái xe xử lý.

Trả lời

2

Vulkan 1.0.16 dường như đã sửa lỗi này. Nó rõ ràng nói rằng không có ghi được thực hiện để tập tin đính kèm chỉ số lớn hơn một subpasses attachmentCount, hoặc được tuyên bố rõ ràng VK_ATTACHMENT_UNUSED. Biến đầu ra sẽ không được xác định, nhưng không có gì sẽ được ghi vào nó, dựa trên mô tả của đường con hiện tại.


Đó là một câu hỏi rất hay. Tôi đã dành vài phút để đọc thông số ở những nơi dự kiến, nhưng chưa có ngôn ngữ nào giải thích điều gì sẽ xảy ra khi trình đổ bóng phân đoạn ghi vào vị trí đầu ra không có tệp đính kèm trong đường con. Nó nên được chỉ định trong phần 14.3, nhưng không có gì về điều này.

Bạn có thể muốn file a Vulkan spec bug report.

Tôi giả sử các hành vi đúng sẽ được giống như OpenGL: bỏ qua một cách hiệu quả đầu ra như vậy.

+0

Tôi đoán nó chỉ bị bỏ qua. Cũng giống như một [tình huống tương tự] khác (https://github.com/LunarG/VulkanSamples/issues/79) tôi đã nhận thấy trong cùng một ví dụ. – hiddenbit

+1

@hiddenbit: Không, điều đó được viết rõ ràng trong đặc điểm kỹ thuật (không giống như vấn đề cụ thể này). Một đường dẫn không truy cập các bộ mô tả là bố cục tương thích với bộ mô tả * any *. Và do đó có hành vi được xác định rõ ràng với bất kỳ bộ mô tả nào. –

+0

Ah, có bạn là chính xác! – hiddenbit

Các vấn đề liên quan