网格渲染问题libgdx [英] Mesh rendering issue libgdx
问题描述
我有一个非常简单的程序,加载的波前OBJ文件,旋转和显示。
问题是,该方案的一些问题使得它(如缺少三角形)。我有一个类似的问题,当我试图呈现一个金字塔与讷河的教程采取了顶点缓冲。因此,我不知道是什么造成这种渲染的问题。你能帮助我吗?
包com.jam.libgdx3DTest;进口com.badlogic.gdx.Game;
进口com.badlogic.gdx.Gdx;
进口com.badlogic.gdx.graphics *。
进口com.badlogic.gdx.graphics.g3d.loaders.obj.ObjLoader;进口的java.io.InputStream;公共类Libgdx3DTest扩展游戏{ 私人网shuttleMesh;
私人相机拍照;
私人浮动rotateAngle; 公共无效创建(){
如果(shuttleMesh == NULL){
。InputStream的时间= Gdx.files.internal(shuttle.obj)阅读();
shuttleMesh = ObjLoader.loadObj(以假);
}
} 公共无效渲染(){
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);
} 公共无效调整大小(INT宽度,高度INT){
漂浮的aspectRatio =(浮点)宽/(浮点)高度;
摄像头=新PerspectiveCamera(67,2F *的aspectRatio,2F);
camera.translate(0F,0F,12F);
} 公共无效暂停(){
} 公共无效简历(){
} 公共无效的Dispose(){
}
}
我想你可能是具有缠绕的问题,即该模型有不同的绕组比的OpenGL。
OpenGL的绕组逆时针默认情况下,尽管这可以glFrontFace(GL_CW)来改变;
I have a very simple program, that loads an wavefront obj file, rotate and displays it. The problem is that the program renders it with some issues (like missing triangles). I had a similar problem when I tried to render a Pyramid with a vertex buffer taken from NeHe's tutorial. So I don't know what cause this rendering issues. Can you help me?
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() {
}
}
I think you might be having winding issues i.e. the model has different winding than OpenGL.
OpenGL Winding is counterclockwise by default though this can be changed with glFrontFace(GL_CW);
这篇关于网格渲染问题libgdx的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!