首頁  >  文章  >  libgdx 的偵錯網格

libgdx 的偵錯網格

王林
王林轉載
2024-02-22 14:31:07897瀏覽

php小編子墨帶來的java問答專欄今天將討論libgdx遊戲引擎中的調試網格功能。 libgdx是一款功能強大的跨平台遊戲開發框架,其除錯網格功能可幫助開發者更好地除錯遊戲場景,提高開發效率。本文將詳細介紹如何在libgdx中啟用和使用偵錯網格,幫助開發者更好地利用這項功能進行遊戲開發。

問題內容

我能否以某種方式在我的libgdx 應用程式中繪製3d 網格,以便我可以放大和縮小該網格以查看我的應用程式發生了什麼? 例如,我試圖創建一個簡單的球體,它應該位於螢幕的中間,但事實並非如此,而且它被壓扁了或者是其他東西。

我想知道我的相機在哪裡以及相機的視角是多少,所有這些都在場景內。這是程式碼,因為 stackoverflow 要求提供程式碼。

@Override
    public void create() {
        modelBatch = new ModelBatch();
        environment = new Environment();
        environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
        environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 10f, 10f, 20f));

        cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        cam.position.set(150f, -9f, 200f);
        cam.lookAt(0, 0, 0);
        cam.near = 1f;
        cam.far = 300f;
        cam.update();


        ModelBuilder modelBuilder = new ModelBuilder();
        model = modelBuilder.createSphere(120f, 120f, 120, 32, 32,
                new Material(ColorAttribute.createDiffuse(Color.GREEN)),
                VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
        instance = new ModelInstance(model);
        instance.transform.set(new Vector3(100, 100, 0), new Quaternion());
    }

我可以這樣做嗎?

解決方法

經過一番搜尋後,我發現了這個令人驚嘆的 libgdx 範例列表,包括帶軸的網格:

private void createaxes() {
        final float grid_min = -viewportwidth;
        final float grid_max = viewportwidth;
        final float grid_step = viewportwidth / 10;

        modelbuilder modelbuilder = new modelbuilder();
        modelbuilder.begin();
        meshpartbuilder builder = modelbuilder.part("grid", gl20.gl_lines, usage.position | usage.colorunpacked, new material());
        builder.setcolor(color.light_gray);
        for (float t = grid_min; t <= grid_max; t += grid_step) {
            builder.line(t, 0, grid_min, t, 0, grid_max);
            builder.line(grid_min, 0, t, grid_max, 0, t);
        }
        builder = modelbuilder.part("axes", gl20.gl_lines, usage.position | usage.colorunpacked, new material());
        builder.setcolor(color.red);
        builder.line(0, 0, 0, 100, 0, 0);
        builder.setcolor(color.green);
        builder.line(0, 0, 0, 0, 100, 0);
        builder.setcolor(color.blue);
        builder.line(0, 0, 0, 0, 0, 100);
        model axesmodel = modelbuilder.end();
        models.add(axesmodel);
        modelinstance instance = new modelinstance(axesmodel);
        instances.add(instance);
    }

這裡是一個如何使用它的範例:https://www.php.cn/link/2d0098b9484a341987c5b11e51d7b79f

您可以在modelbuilder 上使用「 createlinegrid」來建立一個在x-z中延伸的網格(除非您旋轉它) > 飛機。

例如:

grid = modelbuilder.createlinegrid(
   32, 32, 10.0f, 10.0f, 
    new material(colorattribute.creatediffuse(color.red)), 
    vertexattributes.usage.position | vertexattributes.usage.normal);

gridinstance = new modelinstance(grid);

其中 gridmodelgridinstancemodelinstance。 然後,您只需將 render 呼叫包含到您的 modelbatch 中即可:

modelBatch.render(gridInstance);

在您的程式碼上執行此操作會產生以下渲染:

您可以自訂網格線的數量及其間距以滿足您的需求。

以上是libgdx 的偵錯網格的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除