Use canvas scaling rather than css scaling for full screen / fit to help reduce "fuzzy" look when scaling
Chưa có ai nhận issue này.
- #517 của @jcollard — đã đóng, không merge
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- typescript
- Lĩnh vực
- computer-graphics, frontend
Hướng nghiên cứu
Start with src/components/CanvasGamePanel/CanvasGamePanel.tsx and CanvasGamePanel.module.css to trace how fit/full and native sizing are applied, then inspect packages/canvas-runtime/src/renderer/CanvasRenderer.ts for rendering dimensions and scaling. Done means fit/full use container size × devicePixelRatio, Lua still sees logical dimensions, drawing remains correctly scaled, and native mode is unchanged.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem
When using "fit" or "full" scaling modes, the canvas appears "fuzzy" or blurry because scaling is done via CSS (object-fit: contain) rather than native canvas sizing. This is especially noticeable on HiDPI displays or when the canvas is scaled up significantly.
Current Behavior
- Canvas element has fixed
width/heightattributes (e.g., 800x600) - CSS
object-fit: containvisually scales the canvas to fit the container - No device pixel ratio (DPI) awareness
Desired Behavior
- Canvas
width/heightshould match the actual rendered size × device pixel ratio - Drawing coordinates should be scaled appropriately to preserve Lua code behavior
- Lua API returns logical dimensions (backward compatible)
- Result: crisp rendering at any scale without blurriness
Affected Files
src/components/CanvasGamePanel/CanvasGamePanel.tsxsrc/components/CanvasGamePanel/CanvasGamePanel.module.csspackages/canvas-runtime/src/renderer/CanvasRenderer.ts
Acceptance Criteria
- Canvas uses native resolution matching container size × devicePixelRatio
- Fit/full modes render without CSS-induced blur
- Lua API returns logical dimensions (backward compatible)
- Drawing commands are internally scaled by devicePixelRatio
- Native mode unchanged
- Ngôn ngữ chính
- TypeScript
- Star
- 1
- Fork
- 0
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của jcollard/LuaInTheWeb
-
tech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
jcollard/LuaInTheWeb#752 ·
-
tech-debt
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 68/100
jcollard/LuaInTheWeb#690 ·
-
tech-debt
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 75/100
jcollard/LuaInTheWeb#590 ·
-
tech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
jcollard/LuaInTheWeb#518 ·
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
jcollard/LuaInTheWeb#235 ·
Tất cả issue của jcollard/LuaInTheWeb
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
awslabs/visual-asset-management-system#804 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
restatedev/sdk-typescript#813 ·
-
bug desktop P1 session XS
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Merit-Systems/x402scan#1312 ·
-
type:bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Azure/apiops-cli#331 ·
Maintainer thường phản hồi trong vòng 3 ngày