Làm cách nào để chuyển qua tham chiếu trong trình đổ bóng GLSL?Bạn có thể chuyển ma trận bằng cách tham chiếu trong trình đổ bóng GLSL không?
Trả lời
Bạn có thể đánh dấu một thuộc tính như inout
trong chữ ký chức năng, và điều đó sẽ làm cho các thuộc tính một cách hiệu quả "vượt qua bằng cách tham khảo"
Ví dụ,
void doSomething(vec3 trans, inout mat4 mat)
Đây mat
được "thông qua tham khảo" , trans
được chuyển theo giá trị.
mat
phải có khả năng ghi (tức là không phải thuộc tính đồng nhất)
Có thể sử dụng 'inout' trên các yếu tố/sự lộn xộn của các loại hợp chất không? ví dụ. 'void swap (inout float a, inout float b); vec3 foo, bar; hoán đổi (foo.x, bar.x) ' – AkiRoss
Đó là một lời nói dối. "vòng loại tham số chức năng" inout "sẽ dẫn đến hai" bản sao sâu "của dữ liệu của bạn. Đọc tài liệu. https://www.opengl.org/wiki/Core_Language_(GLSL)#Functions Như tôi có thể thấy chỉ có một cách để có được "tham chiếu" thực sự trong glsl, và điều này được cho phép bởi phần mở rộng này: https://www.opengl.org/registry/specs/NV/shader_buffer_load.txt – Crabonog
Đối với bất cứ ai đi qua câu trả lời này trong tương lai, ** IT IS COMPLETELY WRONG **. GLSL không cung cấp cho bạn quyền kiểm soát các thông số chức năng được truyền "dưới mui xe". Thay vào đó, trình biên dịch quyết định ** mọi thứ **, và (hy vọng) không thực sự sao chép mọi thứ thường. Xem [câu trả lời này] (https://stackoverflow.com/a/28577878) để biết thêm chi tiết. – user69513
- 1. Làm thế nào để bạn có được ma trận modelview và chiếu trong OpenGL?
- 2. Làm cách nào để gỡ lỗi trình đổ bóng GLSL?
- 3. Trình đổ bóng GLSL để cuộn kết cấu
- 4. Vượt qua các ma trận tăng cường uBLAS tới trình đổ bóng OpenGL
- 5. Có thể lấy tham chiếu đến ma trận trong Matlab không?
- 6. Ma trận chiếu ma trận trong Xna/OpenGL - 3D
- 7. Bất cứ ai có thể giải thích trình đổ bóng đoạn GLSL này đang làm gì không?
- 8. Tôi làm cách nào để cải thiện trình đổ bóng ảnh xuống WebGL/GLSL này
- 9. Chuyển màu thông qua trình đổ bóng pixel trong HLSL
- 10. Android OpenGL ES 2.0: Cú pháp "chuyển đổi" có thể có trong trình đổ bóng đoạn GLSL trên Samsung Galaxy S2 không?
- 11. GLSL với trình đổ bóng phân đoạn chỉ hiển thị màu đen GL_POINTS
- 12. 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?
- 13. Đèn chiếu sáng GLSL chung
- 14. Có thể gọi Scala bằng cách tham chiếu không?
- 15. Yếu tố có thể có bóng đổ bóng và chèn bóng cùng một lúc không?
- 16. Tôi có thể tạo công cụ tạo hình xếp trong trình đổ bóng pixel không?
- 17. Có thể biết phiên bản OpenGL có phải là OpenGL ES trong mã trình đổ bóng không?
- 18. chuyển đổi giữa ma trận OpenCV và ma trận int
- 19. Chuyển đổi YUV sang RGB bằng trình đổ bóng phân đoạn
- 20. Làm cách nào để bạn kiểm tra trình kiểm tra OpenGL được viết bằng GLSL?
- 21. Giá trị float không đổi trong trình đổ bóng GLSL - bất kỳ lý do nào để sử dụng đồng phục?
- 22. Ma trận của Ma trận trong Perl
- 23. Tôi có thể chuyển tham số bằng tham chiếu trong Java không?
- 24. Ma trận chiếu 3d đến 2d
- 25. Biên dịch bóng đổ trong PyQt
- 26. Có thể vẽ độ dày đường kẻ trong một trình đổ bóng phân đoạn không?
- 27. Tùy chỉnh UIPopoverBackgroundView: không có bóng đổ
- 28. GLSL 4.1 với gl_ModelViewProjectionMatrix
- 29. Các vấn đề về đổ bóng của Opengl - hiện vật phản chiếu ánh sáng kỳ lạ
- 30. Cocoa và OpenGL, Làm cách nào để đặt thuộc tính đỉnh GLSL bằng mảng?
"Tham chiếu" có ý nghĩa gì ở đây? Mục tiêu là để vượt qua "mà không tạo bản sao sao cho các thay đổi trong tương lai - đối tượng được chia sẻ - sẽ ảnh hưởng đến trình đổ bóng"? –
Nhận xét tuyệt vời. Ý tôi là chính xác ý nghĩa trong C++ hoặc bất kỳ ngôn ngữ lập trình nào khác - __a bản sao cục bộ của tham số được truyền không được thực hiện__. – bobobobo