Tôi gặp sự cố với việc thay đổi kích thước canvas và gl.viewport
đồng bộ hóa.
Giả sử tôi bắt đầu với cả canvas 300x300 canvas và khởi tạo gl.viewport
có cùng kích thước (gl.vieport(0, 0, 300, 300)
).
Sau đó, trong giao diện điều khiển của trình duyệt tôi làm các xét nghiệm của tôi:Thay đổi kích thước webgl gl.viewport
I'm changing size of my canvas, sử dụng jquery, gọi cái gì đó như
$("#scene").width(200).height(200)
After this, i'm calling my resizeWindow function:
function resizeWindow(width, height){ var ww = width === undefined? w.gl.viewportWidth : width; var h = height === undefined? w.gl.viewportHeight : height; h = h <= 0? 1 : h; w.gl.viewport(0, 0, ww, h); mat4.identity(projectionMatrix); mat4.perspective(45, ww/h, 1, 1000.0, projectionMatrix); mat4.identity(modelViewMatrix); }
- chức năng đó là đồng bộ hóa khung nhìn với kích thước bắt buộc.
Thật không may, tôi gl.viewport
sau khi cuộc gọi này chỉ mất một phần của vải của tôi.
Có ai cho tôi biết điều gì đang xảy ra không?
Tôi xin lỗi vì đã hiểu sai về gl.viewportWidth hoặc gl.viewportHeight, các tham số này được chỉ định trong giây lát sau khi khởi tạo đối tượng gl (js feature), vì vậy gl.viewportWidth = canvas.clientWidth và gl.viewportHeight = canvas.clientHeight. Ngoài ra, nếu những điều này sai chính tả chúng sẽ được sửa chữa, nhưng vấn đề xuất hiện khi tôi cố gắng gọi lại bằng tay gọi resizeWindow, trong trường hợp khi các thông số truyền mà chúng cần chiếm ưu thế (xem mã).
Đối với gl.drawingBufferWidth và gl.drawingBufferHeight, cảm ơn, nó thực sự đã giúp tôi – jorj