2016-12-11 19 views
0

私はProcessingビュー(まだAppletを継承しているv2.2.1で)を開発しています。 私はいくつかのpushMatrix()/ popMatrix()を使って変換を行い、コンポジットオブジェクトを表現しています(私は32深度の行列スタックの制限を認識していますが、構成や連続変換では、ペアのプッシュとポップが適切に行われます)。popMatrixをあまりにも多く処理しています

フォントサイズを:これまでのところ、私は予期しない問題を持っていなかったが、まだ別のコンポーネント(すべてではない最初のテキスト有効なコンポーネント)を導入した後、私は時々このようなエラーを取得し始めています

画像の幅と高さは、このグラフィックスカードを搭載した 0より大きくすることはできません。適切にOpenGLの

スレッド「アニメーションのスレッド」java.lang.RuntimeExceptionで

例外で表示するには大きすぎます。 processing.opengl.Texture.setSize(Texture.java:1148)at processing.opengl.Texture.init(Texture.java:213) processing.opengl.Texture(Texture.java:160)at 処理中です。 processing.opengl.FontTextureでprocessing.opengl.FontTexture.initTexture(FontTexture.java:103)でopengl.FontTexture.addTexture(FontTexture.java:134)。(FontTexture.java:71) processing.opengl.PGraphicsOpenGLで.textLineImpl(PGraphicsOpenGL.java:3602) at processing.core.PGraphics.textLineAlignImpl(PGraphics.java:4659) at processing.core.PGraphics.text(PGraphics.java:4356) processing.core.PGraphics.text (PGraphics.java:4307)at processing.core.PApplet.text(PApplet.java:13183)at(MetadataProcessingVM.java:81) ( )ygg.desktop.vm.extVM.MetadataProcessingVM.render(MetadataProcessingVM.java:88)ygg.desktop.vm.extVM.MetadataProcessingVM.render (ygg.desktop.vm.groups)。 TreeLayout.render(TreeLayout.java:43)at ygg.desktop.vm.groups.RenderArea.render(RenderArea.java:167) ygg.desktop.view.MainView.draw(MainView.java:179)at processing.core.PApplet.handleDraw(PApplet.java:2386)at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240) at processing.core.PApplet.run(PApplet.java:2256)at javaです。 lang.Thread.run(Thread.java:745)

スレッド「アニメーションのスレッド」Javaでの例外*父親がPAppletインスタンスである

  father.pushMatrix(); 
      father.translate(posX, posY+8); 

      father.rotate(-father.HALF_PI); 

      father.fill(father.color(30,30,30)); 
      father.textAlign(father.CENTER); 
      father.textSize(16); 
      **father.text(md.getId()!=null?md.getId():"NONE",-(finalY-posY)/2,width/2);** 
      father.fill(father.color(220,220,50)); 
      father.textSize(12); 
      **father.text(md.getId()!=null?md.getId():"NONE",-(finalY-posY)/2,width/2);** 

      father.popMatrix(); 

または

(私は別の実行の最初と2番目のテキスト上で両方を得ることに注意)を参照

。 lang.RuntimeException:Too popMatrix()への呼び出しが多く、pushMatrix()には不十分です。 (MetadataProcessingVM.java: )処理中.PengraphicsOpenGL.popMatrix(PGraphicsOpenGL.java:3811) 7235) at ygg.desktop.vm.groups.TreeLayout.render(TreeLayout.java:43) ygg.desktop.vm.groups.TreeLayout.render(TreeLayout.java:46) ygg.desktop.vmにあります。 groups.TreeLayout.render(TreeLayout.java:46)at ygg.desktop.vm.groups.RenderArea.render(RenderArea.java:167)at ygg.desktop.view.MainView.draw(MainView.java:180)で。 processing.core.PApplet.handleDraw(PApplet。 processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:240) java.lang.Thread.runでprocessing.core.PApplet.run(PApplet.java:2256)(Thread.javaで で2386):Javaの:

  father.pushMatrix(); 
      father.translate(posX, posY+8); 
      father.rotate(-father.HALF_PI); 
      father.fill(father.color(30,30,30)); 
      father.textAlign(father.CENTER); 
      father.textSize(16); 

      father.text(md.getId()!=null?md.getId():"NONE",-(finalY-posY)/2,width/2); 
      father.fill(father.color(220,220,50)); 
      father.textSize(12); 
      father.text(md.getId()!=null?md.getId():"NONE",-(finalY-posY)/2,width/2);  
      **father.popMatrix();** 
    } 

の745)

私は全然OpenGLと/または処理には専門家でないので、私はどのように()以前のJVMが開いたままにしないで連続実行はせずに異なる結果につながることができます思っていました私のコード内の任意のランダムな要素(アプリケーションがすぐにクラッシュした場合、私は何個のオブジェクトを作成しても問題なく動作するように見えます)、また私はどのようにすべての呼び出しが描画サイクルにあり、当然のことながらスレッド(私が知っている)そこに与えられたプッシュの後popMatrixでその例外を得ることができます。

先に進む前に私は何が間違っているのかを知りたいと思っています(既に起こっているとすれば)。そして、各実行時に安定性を得るために何ができるのでしょうか?また、PAppletクライアントの複数のインスタンスが、お互いに誓う

答えて

1

完全なコードの一覧を表示せずにすべてのエラーを特定するのは難しいです。

投稿したものから、unpaired pushMatrix()/ popMatrix()呼び出しがあるようです。それぞれのpushMatrix()操作では、ローカル座標系の変換が完了したら、popMatrix()が必要になります。

詳細については、2D Transformations Processing tutorialを必ずお読みください。

関連する問題