Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “LIBGDX一直在打印”;DefaultShaderProvider:创建新着色器";到终点站_Java_Opengl_Libgdx - Fatal编程技术网

Java “LIBGDX一直在打印”;DefaultShaderProvider:创建新着色器";到终点站

Java “LIBGDX一直在打印”;DefaultShaderProvider:创建新着色器";到终点站,java,opengl,libgdx,Java,Opengl,Libgdx,我正在用libGDX创建一个3d游戏。出于某种原因,我的游戏一直在打印 DefaultShaderProvider: Creating new shader 在候机楼。这简直让我发疯,因为我不能用终端调试我的程序,因为那一行的垃圾邮件。我检查了我的代码中是否有任何可以打印此内容的内容,但我找不到任何可以打印此内容的内容 谁能告诉我为什么会这样 这是我的密码: public class puppetDemo implements ApplicationListener { public Pers

我正在用libGDX创建一个3d游戏。出于某种原因,我的游戏一直在打印

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();
}
}
公共类puppetDemo实现ApplicationListener{
公众透视照相机;
公共模型批处理模型批处理;
公共模型箱;
公共领域;
公共数组实例=新数组();
公共资产管理者资产;
公共灯;
公共摄像机控制器;
公共布尔加载=true;
@凌驾
公共void create(){
摄像头=新透视摄像头(67,Gdx.graphics.getWidth(),
graphics.getHeight());
摄像机位置设置(10f,0f,-100f);
摄像机。注视(0,0,0);
摄像机近距离=0.1f;
照相机。远=300f;
camera.update();
灯光=新灯光();
灯光。环境光。设置(0.4f、0.4f、0.4f、1f);
灯光.添加(新方向灯光().设置(0.8f,0.8f,0.8f,-1f,-0.8f,
-0.2f);
资产=新资产管理器();
assets.load(“data/box.obj”,Model.class);
assets.load(“data/sphere.obj”,Model.class);
}
@凌驾
公共空心调整大小(整型宽度、整型高度){
}
@凌驾
公共无效呈现(){
Gdx.gl.glViewport(0,0,Gdx.graphics.getWidth(),
graphics.getHeight());
Gdx.gl.glClear(GL10.gl_颜色_缓冲_位| GL10.gl_深度_缓冲_位);
modelBatch=新modelBatch();
modelBatch.begin(摄影机);//开始渲染
渲染(实例、灯光);
modelBatch.end();//结束渲染
}
@凌驾
公共空间暂停(){
}
@凌驾
公众简历(){
}
@凌驾
公共空间处置(){
modelBatch.dispose();
}
}

当您在
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
方法中而不是在
render
中实例化
modelBatch
,我怀疑您只能看到一次输出。若并没有,那个么将日志记录语句删除可能是值得的,因为这似乎是不必要的