2012-06-17 48 views
8

Làm cách nào để bật tiện ích mở rộng trên trình đổ bóng Three.js?Bật tiện ích mở rộng trên trình đổ bóng Three.js

Mã của tôi cho đến nay:

nhận được phần mở rộng:

var domElement = document.createElement('canvas'); 
var gl = domElement.getContext('webgl') || domElement.getContext('experimental-webgl'); 
gl.getExtension('OES_standard_derivatives'); 

trên shader của tôi:

fragmentShader: [ 
    "#extension GL_OES_standard_derivatives : enable", 
    "code..." 
]... 

Giao diện điều khiển đầu ra:
CẢNH BÁO: 00:26: mở rộng 'GL_OES_standard_derivatives' không được hỗ trợ
LRI: 0:32: 'dFdx': không tìm thấy hàm bị quá tải phù hợp
LRI: 0:32: '=': không thể chuyển đổi từ 'phao trung bình const' sang 'vectơ 2 thành phần của phao'
L ERI: 0:33: 'dFdy': không tìm thấy hàm bị quá tải phù hợp
L ERI: 00:33: '=': không thể chuyển đổi từ 'mediump phao const' thành 'vector 2 thành phần của phao'

Sau khi đọc this issue on github, tôi đã cố gắng ví dụ này: từ http://jsfiddle.net/VJca4/ tôi nhận được các lỗi này

CẢNH BÁO : 0:27: phần mở rộng 'GL_OES_standard_der curr' không được hỗ trợ
L ERI: 0:30: '=': không thể chuyển đổi từ 'phao trung bình const' thành '2 thành phần vec tor của phao '
LRI: 0:31:' dFdx ': không có hàm quá tải phù hợp được tìm thấy
L ERI: 0:31:' = ': không thể chuyển đổi từ' phao trung bình const 'thành' vector 2 thành phần của phao '

+0

jsfiddle đã mất tích vec2, và three.js đã quá cũ - xem http: // jsfiddle .net/VJca4/9/nó hoàn toàn hoạt động) – makc

Trả lời

6

Bạn cũng sẽ có thể làm điều này:

renderer.context.getExtension('OES_standard_derivatives'); 
+0

Bạn đã sử dụng nó như thế nào? Tôi có một vấn đề rất tương tự. – Hobbes

+0

Tôi cũng gặp vấn đề này. Tôi đang gọi 'renderer.context.getExtension ('GL_OES_standard_der curr');' nhưng tôi nhận được 'LRI: 0: 114: 'GL_OES_standard_der curr': mở rộng bị tắt' khi tôi cố gắng tạo một' ShaderMaterial' từ mã đổ bóng của tôi. Nếu tôi biên dịch đổ bóng trong webgl thông thường với '#extension GL_OES_standard_der threshold: enable' trên dòng đầu tiên, nó hoạt động. – matth

+3

Có vẻ như cách để làm điều này trong codebase ba.js hiện tại là đặt 'dẫn xuất = true' trong' ShaderMaterial' khi tạo. – matth

1

Đã tìm thấy lỗi. Bạn phải sử dụng phần tử DOM của renderer:

var gl = renderer.domElement.getContext('webgl') || 
      renderer.domElement.getContext('experimental-webgl'); 
gl.getExtension('OES_standard_derivatives'); 
Các vấn đề liên quan