Hakuna matata!
Also, hier mal ein Beispiel, wie das im Idealfall aussehen sollte.
Soweit ich das verstanden habe, _ersetzt_ die Angabe in CSS die direkte Attributangaben nicht!
Ersetzt wird da sowieso nichts, aber die Attribute refklektieren nicht die CSS-Dimensionen, das ist richtig. Wenn ich den Standard richtig verstehe (und da hab ich mir nicht sicher), dann sollte das aber nicht weiter tragisch sein, weil die internen Bitmap-Dimensionen direkt von den CSS-Dimensionen und nicht von den width- und height-Attributen bestimmt werden sollten.
Um die Verwirrung noch ein wenig zu vergrößern: Der WebGL-Viewport skaliert nicht automatisch mit den internen Bitmap-Dimensionen des <canvas>-Elements, sondern will immer manuell angepasst werden.
Wir reden also von insgesamt vier Koordinatensystemen:
- width- und height-Eigenschaften auf dem <canvas>
- Die CSS-Dimensionen (getComputedStyle())
- die interne Bitmap-Dimension des <canvas>
- der Viewport des WebGL-Kontextes
(2) und (3) sollten eigentlich identisch sein. (1) sollte keine große Rolle spielen. Bei einer Größenveränderung muss (4) auf (2) gesetzt werden. Soweit die Theorie. In der Praxis scheint es aber so zu sein, dass man zusätzlich auch noch (1) auf (2) setzen muss.
Die Standards könnten hier ruhig etwas ausführlicher gestaltet sein.
Insofern: Problem gelöst. ;-)
Immerhin *seufz*
“All right, then, I'll go to hell.” – Huck Finn