Does `AlphaMode::Opaque` carry its weight?
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- rust
- Bereich
- computer-graphics
Rechercherichtung
Beginne mit der Überprüfung der AlphaMode API und des in Pull Request 321 beschriebenen Verhaltens. Vergleiche die IOSurface- und Web-canvas-Einschränkungen von macOS/iOS, einschließlich der möglichen Alpha-Einstellungen von CALayer und canvas, und prüfe Issue 211 auf verwandte Anforderungen. Als abgeschlossen gilt die Arbeit, wenn eine dokumentierte Entscheidung darüber vorliegt, ob Opaque ein separater Modus bleiben sollte.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
In https://github.com/rust-windowing/softbuffer/pull/321, I added AlphaMode::Opaque as a sort of workaround for not all platforms supporting a mode where the alpha channel is ignored.
Specifically:
- On macOS/iOS with IOSurface, only premultiplied surfaces are supported.
- On Web, both pre- and postmultiplied can be supported zero-copy, but ignored cannot.
Another way to model this would be:
#[derive(Default)]
pub enum AlphaMode {
#[cfg_attr(not(any(target_vendor = "apple", target_family = "wasm")), default)]
Ignored,
#[cfg_attr(target_vendor = "apple", default)]
Premultiplied,
#[cfg_attr(target_family = "wasm", default)]
Postmultiplied,
}
Is there a strong benefit to having a separate AlphaMode::Opaque? We use it currently for debug-asserting that the alpha channel is 1.0, to help with writing cross-platform code, but is that enough of an argument? Is it useful for setting properties like CALayer.setOpaque(true) or { alpha: false } in canvas.getContext?
I guess it may be useful for https://github.com/rust-windowing/softbuffer/issues/211?
- Vorherrschende Sprache
- Rust
- Sterne
- 507
- Forks
- 84
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus rust-windowing/softbuffer
-
DS - X11
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
rust-windowing/softbuffer#368 ·
-
bug DS - Android NDK
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
rust-windowing/softbuffer#347 · 1 Kommentar ·
-
enhancement question
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
rust-windowing/softbuffer#338 ·
-
Zero-copying on AndroidOffenDS - Android NDK enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
rust-windowing/softbuffer#318 · 2 Kommentare ·
-
DS - Wayland DS - X11 question
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
rust-windowing/softbuffer#306 · 2 Kommentare ·
Alle Issues in rust-windowing/softbuffer
Ähnliche Issues
-
agent:triaged bug bughunt pm:npm priority:p1
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
SocketDev/socket-patch#464 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
Maintainer antworten meist innerhalb von 3 Tagen
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
stellar/stellar-cli#2773 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag