5

Wavefront objファイルをロードし、回転させて表示する非常に単純なプログラムがあります。問題は、プログラムがいくつかの問題 (三角形の欠落など) でそれをレンダリングすることです。NeHe のチュートリアルから取得した頂点バッファーを使用してピラミッドをレンダリングしようとしたときに、同様の問題が発生しました。したがって、このレンダリングの問題の原因はわかりません。手伝って頂けますか?バギースペースシャトル

package com.jam.libgdx3DTest;

import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.*;
import com.badlogic.gdx.graphics.g3d.loaders.obj.ObjLoader;

import java.io.InputStream;

public class Libgdx3DTest extends Game {

    private Mesh shuttleMesh;
    private Camera camera;
    private float rotateAngle;

    public void create() {
        if (shuttleMesh == null) {
            InputStream in = Gdx.files.internal("shuttle.obj").read();
            shuttleMesh = ObjLoader.loadObj(in, false);
        }
    }

    public void render() {
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

        Gdx.gl10.glMatrixMode(GL11.GL_MODELVIEW_MATRIX);

        Gdx.gl10.glLoadIdentity();

        camera.update();
        camera.apply(Gdx.gl10);

        rotateAngle += 0.5f;
        Gdx.gl10.glRotatef(rotateAngle, 0f, 1f, 0f);
        Gdx.gl10.glRotatef(-90f, 1f, 0f, 0f);

        shuttleMesh.render(GL11.GL_TRIANGLES);
    }

    public void resize(int width, int height) {
        float aspectRatio = (float) width / (float) height;
        camera = new PerspectiveCamera(67, 2f * aspectRatio, 2f);
        camera.translate(0f, 0f, 12f);
    }

    public void pause(){
    }

    public void resume(){
    }

    public void dispose() {
    }
}
4

2 に答える 2

2

巻線の問題が発生している可能性があります。つまり、モデルの巻線がOpenGLとは異なります。

OpenGL Windingはデフォルトで反時計回りですが、これはglFrontFace(GL_CW)で変更できます。

于 2012-09-11T01:15:09.757 に答える
0

これはあなたの問題だと思います

shuttleMesh.render(GL11.GL_TRIANGLES) 

する必要があります

shuttleMesh.render(GL11.GL_TRIANGL_FAN);

まに

于 2013-01-28T16:51:33.610 に答える