hotti: Kontext Objekt

hi,

wir erstellen ein Objekt:
   var canvas = document.createElement('canvas');

und dann ein weiteres Objekt für den 2D-Kontext:
   var ctx = canvas.getContext("2d");

damit zeichnen wir ein Bild:
   ctx.drawImage(imageObject, 0, 0, width2, height2);

und holen danach die Daten da raus:
   canvas.toBlob();

Ich würde diesem JS-Beispiel, was auf den ersten Blick etwas umständlich erscheint, was positives abgewinnen und habe recherchiert ob evntl. auch in anderen PLs so vorgegangen wird.

Rein formal gesehen könnte die Methode drawImage(); ja auch eine Methode des canvas-Object sein wobei der 2D-Kontext übergeben wird, fiktives Beispiel:
   canvas.drawImage( {context: '2d'}, imageObject, 0, 0, width2, height2 );

Warum also ein Kontext-Objekt, ist das JS-spezifisch und was steckt dahinter?,?,?

Bitte mal um Hinweise, danke im Vorab, mfG.

  1. Meine Herren!

    Warum also ein Kontext-Objekt, ist das JS-spezifisch und was steckt dahinter?,?,?

    Es gibt verschiedene Rendering-Kontexte. 2D ist der bekannteste und der einzige Standard der vom w3c publiziert wird. Es gibt aber zum Beispiel auch WebGL, das von der Krhonos Group spezifiziert wird. Durch die Zwischenschicht ist es möglich das canvas-Element für verschiedene Zeichen-Schnittstellen wieder zu verwenden.

    --
    “All right, then, I'll go to hell.” – Huck Finn
    1. hi,

      Es gibt verschiedene Rendering-Kontexte. 2D ist der bekannteste und der einzige Standard der vom w3c publiziert wird. Es gibt aber zum Beispiel auch WebGL, das von der Krhonos Group spezifiziert wird. Durch die Zwischenschicht ist es möglich das canvas-Element für verschiedene Zeichen-Schnittstellen wieder zu verwenden.

      Mit meiner Frage gehts nicht um canvas.

      1. Meine Herren!

        Mit meiner Frage gehts nicht um canvas.

        Die Kontexte stellen _primitive_ Zeichenschnittstellen zur Verfügung. drawImage() ist eine prmitive Zeichenroutine für den 2D-Kontext. Wer sich schonmal mit 3D-Programmierung befasst hat, der weiß, dass so eine Methode in einem 3D-Kontext kein Primtivling ist. Bei primitiven Schnittsellen geht es ja eben darum, keine weitere Abstraktionsschicht vorzunehmen, so wie du es hiermit vorschlägst: canvas.drawImage( {context: '2d'}, imageObject, 0, 0, width2, height2 ); Solche Abstraktionsschichten gehören in eine Userland-Bibliothek. Siehe zum Beispiel Three.js, da findet so eine Abstraktion statt, dort werden keine prmitiven Zeichenroutinen mehr angesprochen, sondern nur noch kurz gesagt, welche primtive Schicht genutzt werden soll: DomRenderer, CanvasRenderer oder WebGLRenderer.

        --
        “All right, then, I'll go to hell.” – Huck Finn
        1. hia,

          Die Kontexte stellen _primitive_ Zeichenschnittstellen zur Verfügung. [..] Solche Abstraktionsschichten gehören in eine Userland-Bibliothek. Siehe zum Beispiel Three.js, da findet so eine Abstraktion statt, dort werden keine prmitiven Zeichenroutinen mehr angesprochen, sondern nur noch kurz gesagt, welche primtive Schicht genutzt werden soll: DomRenderer, CanvasRenderer oder WebGLRenderer.

          Wow, danke Dir, damit kann ich was anfangen!!!

          2D, 3D, ok, ok... hier entlang bitte ;)

          Viele Grüße!