Biến mà bạn đang nhồi nhét các giá trị vào quy định độ chính xác mà bạn đang làm việc, ở bên phải dấu bằng?Trong OpenGL ES 2.0/GLSL, bạn cần thông số chính xác ở đâu?
Ví dụ, là có bất kỳ sự khác biệt, ý nghĩa, với độ chính xác specifier đây:
gl_FragColor = lowp vec4(1);
Dưới đây là một ví dụ khác:
lowp float floaty = 1. * 2.;
floaty = lowp 1. * lowp 2.;
Và nếu bạn mất một phao nổi, và tạo ra một vector hoặc ma trận từ chúng, liệu vector hoặc ma trận đó có dựa trên độ chính xác của các giá trị mà bạn làm với nó hay các giá trị đó có chuyển thành một mức độ chính xác khác không?
Tôi nghĩ rằng việc tối ưu hóa này sẽ trả lời tốt nhất các câu hỏi:
dot(gl_LightSource[0].position.xyz, gl_NormalMatrix * gl_Normal)
Ý tôi là, nó cần phải đi xa này, nếu bạn muốn nó càng nhanh càng tốt, hoặc là một số của nó vô dụng?
lowp dot(lowp gl_LightSource[0].position.xyz, lowp gl_NormalMatrix * lowp gl_Normal)
Tôi biết bạn có thể xác định độ chính xác mặc định cho phao và điều này được cho là được sử dụng cho vectơ và ma trận sau đó. Giả sử với mục đích giáo dục, mà chúng tôi đã định nghĩa này trước đây:
precision highp float;
"Hơn nữa, vì độ chính xác của gl_FragColor đã được xác định dựa trên độ sâu của mục tiêu hiển thị" nguồn của bạn cho câu lệnh này là gì? Tôi không thấy bất kỳ thông tin về điều này trong spec. – eodabash