2017-01-13 8 views
1

По какой-то причине, когда я запускаю свою программу, я получаю исключение NullPointerException. Вот аварийный журнал:Обработка необычного исключения Null Pointer (что-то с PGraphics)

java.lang.NullPointerException 
    at processing.awt.PGraphicsJava2D.getRaster(PGraphicsJava2D.java:2727) 
    at processing.awt.PGraphicsJava2D.loadPixels(PGraphicsJava2D.java:2751) 
    at processing.opengl.PGraphicsOpenGL.initCache(PGraphicsOpenGL.java:6471) 
    at processing.opengl.PGraphicsOpenGL.getTexture(PGraphicsOpenGL.java:6424) 
    at processing.opengl.PGraphicsOpenGL$TexCache.getTexture(PGraphicsOpenGL.java:7464) 
    at processing.opengl.PGraphicsOpenGL.flushPolys(PGraphicsOpenGL.java:2430) 
    at processing.opengl.PGraphicsOpenGL.flush(PGraphicsOpenGL.java:2371) 
    at processing.opengl.PGraphicsOpenGL.endDraw(PGraphicsOpenGL.java:1540) 
    at processing.core.PApplet.handleDraw(PApplet.java:2436) 
    at processing.opengl.PSurfaceJOGL$DrawListener.display(PSurfaceJOGL.java:884) 
    at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692) 
    at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674) 
    at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443) 
    at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293) 
    at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147) 
    at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759) 
    at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81) 
    at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452) 
    at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178) 
    at java.util.TimerThread.mainLoop(Timer.java:555) 
    at java.util.TimerThread.run(Timer.java:505) 
Could not run the sketch (Target VM failed to initialize). 
For more information, read revisions.txt and Help ? Troubleshooting. 

Это происходит только в случае использования P2D/P3D. JAVA2D работает отлично, но я хочу использовать P2D, потому что в противном случае программа лагги, как черт.

+0

Пожалуйста, пост [mcve]. Обратите внимание, что это должно ** отметить ** быть полным наброском. Просто достаточно кода, чтобы мы могли скопировать и вставить, чтобы увидеть ошибку. –

+0

@IqPGM Есть ли возможность опубликовать полный код? Моя догадка заключается в том, что вы не используете тот же рендерер в основном эскизе, что и в PGraphics (например, используйте '' 'P2D''' в' '' size() '' '' и '' 'createGraphics()' ''. –

+0

@GeorgeProfenza Спасибо, это сработало. Я не знал об этом параметре в 'createGraphics()'. Еще раз спасибо. – lqPGM

ответ

0

Пожалуйста, проверьте, что вы используете явный рендер для вашего эскиза и PGraphics, особенно для рендеринга GL (например, P2D/P3D).

Например:

PGraphics buffer; 

void setup(){ 
    size(400,400,P3D); 

    buffer = createGraphics(width,height,P3D); 
    buffer.beginDraw(); 
    buffer.background(0); 
    buffer.sphereDetail(4); 
    buffer.noFill(); 
    buffer.endDraw(); 

} 
void draw(){ 
    float size = map(sin(frameCount * .01),-1.0,1.0,0.0,100.0); 

    buffer.beginDraw(); 
    buffer.stroke(255,size * 0.5); 
    buffer.translate(mouseX,mouseY,0); 
    buffer.rotate(frameCount * 0.01,0.5,0.5,1.0); 
    buffer.sphere(size); 
    buffer.endDraw(); 

    image(buffer,0,0); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^