2013-07-18 26 views
0

我正在libGDX中創建一個3D遊戲。由於某種原因,我的遊戲不斷打印LIBGDX不斷向終端打印「DefaultShaderProvider:創建新的着色器」

DefaultShaderProvider: Creating new shader 

在終端中。這讓我絕對瘋了,因爲我無法通過終端來調試我的程序,因爲該行的垃圾郵件。我檢查了我的代碼,可以打印這些東西,但是我找不到任何可能的東西。

有誰能告訴我爲什麼會發生這種情況?

這裏是我的代碼:

public class puppetDemo implements ApplicationListener { 
public PerspectiveCamera camera; 
public ModelBatch modelBatch; 
public ModelInstance box; 
public ModelInstance sphere; 
public Array<ModelInstance> instances = new Array<ModelInstance>(); 
public AssetManager assets; 
public Lights lights; 
public CameraInputController camController; 

public boolean loading = true; 

@Override 
public void create() { 
    camera = new PerspectiveCamera(67, Gdx.graphics.getWidth(), 
      Gdx.graphics.getHeight()); 
    camera.position.set(10f, 0f, -100f); 
    camera.lookAt(0, 0, 0); 
    camera.near = 0.1f; 
    camera.far = 300f; 
    camera.update(); 

    lights = new Lights(); 
    lights.ambientLight.set(0.4f, 0.4f, 0.4f, 1f); 
    lights.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, 
      -0.2f)); 

    assets = new AssetManager(); 
    assets.load("data/box.obj", Model.class); 
    assets.load("data/sphere.obj", Model.class); 

} 

@Override 
public void resize(int width, int height) { 

} 

@Override 
public void render() { 
    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), 
      Gdx.graphics.getHeight()); 
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 


    modelBatch = new ModelBatch(); 

    modelBatch.begin(camera);// Begin Rendering 
    modelBatch.render(instances, lights); 
    modelBatch.end();// End Rendering 
} 

@Override 
public void pause() { 

} 

@Override 
public void resume() { 

} 

@Override 
public void dispose() { 
    modelBatch.dispose(); 
} 
} 

回答

2

當您在render方法調用new ModelBatch(),這是創建DefaultShaderProvider的新實例:

public ModelBatch() { 
    this(new RenderContext(new DefaultTextureBinder(DefaultTextureBinder.ROUNDROBIN, 1)), 
     new DefaultShaderProvider(), 
     new DefaultRenderableSorter()); 
} 

從源頭上尋找DefaultShaderProvider你」我會注意到在createShader方法中的日誌輸出:

@Override 
protected Shader createShader(final Renderable renderable) { 
    Gdx.app.log("DefaultShaderProvider", "Creating new shader"); 
    // ... 
} 

create方法中實例化modelBatch而不是在render中,我懷疑你只能看到一次輸出。如果沒有,可能值得提出一個問題,因爲它似乎沒有必要刪除日誌語句。