non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

Canvas#getContextを2回呼ぶと

おはようございます。長男は肉は最近でこそ食べるようになりましたが、次男は肉食のようで、父の日に義父と近所の焼肉屋へ行ったら、バクバク肉を食べてました。kjunichiです。

 

Canvas#getContextを複数回呼んだら

ちょっと前に、Atomエディタのプラグインをそろそろ作りはじめようと、調べたら、background-matrixなるモジュールを見かけ、ちょうどビジュアル系なプラグインを作りたかったので、大いに参考になりそうだということで、

atom ~/.atom/packages/background-matrix/

で、プラグインのコードをAtomエディタで開き、lib/matrix.jsの

ctx = c.getContext("2d"),

ctx = c.getContext("2d"),
ctx2 = c.getContext("webgl"),

と、書き換え、WebGLを試したら、ctx2はnull。

ああ、Atom ShellはWebGL対応したが、Atomエディタはまだなのかぁ。とあきらめモードが入ってきたのでしたが、もしかして、Canvas#getContextって複数回というか、2dとwebglを一つのcanvasに対して呼べない疑惑を思いつき、 WebGLのシェーダーをあれこれいじるで試したら、ビンゴ!

ということで、animation-showcaseのthreejs-examples-view.coffeeを

#@renderer = new THREE.CanvasRenderer()
@renderer = new THREE.WebGLRenderer()

と、変更して、警告の嵐になりつつもAtomエディタでWebGLが使えることが分かった。

 

まとめ

関連記事

10年前の記事