2013-07-01 33 views
11

Tôi đang cố gắng hiểu cách mô phỏng console.log trong trình che bóng webgl được viết bằng GLSL. Thật dễ dàng để nhận được thông báo lỗi nhưng tôi không thể tìm hiểu cách in thư tùy chỉnh.Làm thế nào để console.log trong trình che bóng webgl?

Về cơ bản tôi muốn in nội dung trong giao diện điều khiển của trình duyệt:

<script id="shader-fs1" type="x-shader/x-fragment"> 
    void main(void) 
    { 
    //console.log doesn't work here since it's GLSL not javascript 
    gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); 
    } 
</script> 

Bất kỳ lời đề nghị?

Trả lời

3

Không chắc chắn nếu điều đó là có thể, nhưng bạn có thể muốn xem the WebGL Inspector library cho mục đích gỡ lỗi.

1

Hiện tại không có cách nào để biết dữ liệu đầu ra từ GLSL trong WebGL ngoại trừ thông qua kết quả được định nghĩa (màu màn hình/hình ảnh). Trừ khi bạn đã làm tôi sẽ đề nghị bạn kiểm tra Learning WebGL, cũng kick.js có thể hữu ích cho bạn.

3

Sau khi biên soạn shader bạn có thể làm một cái gì đó như:

if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { 
    alert(gl.getShaderInfoLog(shader)); 
} 

Và nó sẽ hiển thị cho bạn bất kỳ thông báo lỗi trong quá trình biên dịch. GLSL không thể gửi dữ liệu trở lại chương trình dưới bất kỳ hình thức nào khác ngoài bộ đệm khung/kết cấu, do đó bạn chỉ có thể kiểm tra những gì đang xảy ra bằng cách kiểm tra màu đầu ra. Trình kiểm tra WebGL có thể giúp tôi hữu ích, như được chỉ bởi Michael, nhưng không nhiều đối với các trình đổ bóng, nhưng để gỡ lỗi chung về các ứng dụng webGL