Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 正交摄影机会导致剪辑问题_Java_Libgdx_Clipping_Orthographic - Fatal编程技术网

Java 正交摄影机会导致剪辑问题

Java 正交摄影机会导致剪辑问题,java,libgdx,clipping,orthographic,Java,Libgdx,Clipping,Orthographic,使用LibGDX来简化我的项目,我遇到了一个似乎找不到问题根源的问题。无论何时渲染模型,它在投影视图中都会显示良好,但一旦切换到正交视图,就会出现一些奇怪的剪裁问题 如上所述,我使用的是LibGDX,如果您需要OpenGL等价物,请询问。以下是代码的一些部分,可根据要求提供: public Camera(String type) { if (type.contains("perspective")) { position = new Vector3(1, 2,

使用LibGDX来简化我的项目,我遇到了一个似乎找不到问题根源的问题。无论何时渲染模型,它在投影视图中都会显示良好,但一旦切换到正交视图,就会出现一些奇怪的剪裁问题

如上所述,我使用的是LibGDX,如果您需要OpenGL等价物,请询问。以下是代码的一些部分,可根据要求提供:

    public Camera(String type) {
    if (type.contains("perspective")) {
        position = new Vector3(1, 2, 1);
        lookAt = new Vector3(0, 1, 0);

        perspectiveCamera = new PerspectiveCamera(67,
                Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        perspectiveCamera.position.set(position);
        perspectiveCamera.lookAt(lookAt);
        perspectiveCamera.near = 1f;
        perspectiveCamera.far = 300f;
        perspectiveCamera.update();
    }
    if (type.contains("orthographic")) {
        position = new Vector3(1, 1, 1);
        lookAt = new Vector3(0, 0, 0);
        orthographicCamera = new OrthographicCamera(
                Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        orthographicCamera.position.set(position);
        orthographicCamera.lookAt(lookAt);
        orthographicCamera.near = 1f;
        orthographicCamera.far = 300f;
        orthographicCamera.zoom = 0.005f;

        orthographicCamera.update();
    }
}
----换班

@Override
public void render() {
    Vector3 translate = new Vector3(isTrue(input.D)
            + (isTrue(input.A) * -1), 0, isTrue(input.W)
            + (isTrue(input.S) * -1)).nor().crs(
            new Vector3(0.05f, 0.05f, 0.05f));
    camera.perspectiveCamera.translate(translate);//Change to orthographic accordingly
    camera.perspectiveCamera.update();//Change to orthographic accordingly

    // Temporary (testing)
    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(),
            Gdx.graphics.getHeight());
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
    batch.begin(camera.getPerspectiveCamera());//Change to orthographic accordingly

    for (int n = 0; n < world.entities.size; n++) {
        instance = world.entities.get(n).modelInstance;
        instance.transform.setToTranslation(world.entities.get(n).position);
        world.entities.get(n).modelInstance = instance;
        batch.render(world.entities.get(n).modelInstance, environment);
    }

    batch.end();
}
@覆盖
公共无效呈现(){
Vector3 translate=新Vector3(isTrue(input.D)
+(输入A)*-1,0,输入W)
+(isTrue(input.S)*-1)).nor().crs(
新矢量3(0.05f,0.05f,0.05f));
camera.perspectiveCamera.translate(translate);//相应地更改为正交
camera.perspectiveCamera.update();//相应地更改为正交
//临时(测试)
Gdx.gl.glViewport(0,0,Gdx.graphics.getWidth(),
graphics.getHeight());
Gdx.gl.glClear(GL20.gl_颜色_缓冲_位| GL20.gl_深度_缓冲_位);
batch.begin(camera.getPerspectiveCamera());//相应地更改为正交
对于(int n=0;n
通过将文件转换为LibGDX的本机文件格式解决了这个问题

在我看来,深度测试似乎被禁用了。奇怪的是,深度测试似乎完全隐藏了它。LibGDX让我很困惑。你为什么要尝试使用三维正交相机?通常使用透视相机。我有我的理由,我发现了错误!结果表明,LibGDX的本机文件格式优于.obj/.fbx文件。使用转换器似乎解决了这个问题。