我已经在JoGL中使用了OBJ模型加载器几天,并且可以在数组中获取顶点:draw[face][vertex][x,y,z,or w]
我已经尝试了几种方法来渲染这个数组(即VBO),但没有一个工作至今。我决定尝试在循环中渲染面部,但是,当我运行程序时,没有渲染任何内容。这是我的代码:
for(int i = 0; i < draw.length; i++){
gl.glBegin(GL.GL_TRIANGLE_STRIP);
//start drawing
for(int i2=0;i2<draw[i].length;i2++){
float[] xyzw = new float[4];
//grab all the vertex values
for(int i3=0; i3<draw[i][i2].length;i3++){
xyzw[i3]=draw[i][i2][i3];
}
gl.glColor3f(1.0f, 0.0f, 0.0f); // Set the current drawing color to red
gl.glVertex3f(xyzw[0], xyzw[1], xyzw[2]);
}
gl.glEnd();
}
如果我这样做,那就是特殊的事情:
for(int i = 0; i < draw.length; i++){
gl.glBegin(GL.GL_TRIANGLE_STRIP);
//start drawing
for(int i2=0;i2<draw[i].length;i2++){
float[] xyzw = new float[4];
//grab all the vertex values
for(int i3=0; i3<draw[i][i2].length;i3++){
xyzw[i3]=draw[i][i2][i3];
}
gl.glColor3f(1.0f, 0.0f, 0.0f); // Set the current drawing color to red
gl.glVertex3f(xyzw[0], xyzw[1], xyzw[2]);
gl.glVertex3f(0.0f, 0.0f, 0.0f); // Top
gl.glColor3f(0.0f, 1.0f, 0.0f); // Set the current drawing color to green
gl.glVertex3f(1.0f, 0.0f, 1.0f); // Bottom Left
gl.glColor3f(0.0f, 0.0f, 1.0f); // Set the current drawing color to blue
gl.glVertex3f(0.0f, 0.0f, 1.0f); // Bottom Right
}
gl.glEnd();
}
然后我得到一个扭曲的形状,但没有那些无关的顶点,就不会渲染任何东西。
答案 0 :(得分:0)
你的问题是:
float[] xyzw = new float[4];
这个数组应该在循环之外,因为这个数组每次迭代都是初始化和填充的。 要解决你的问题,必须在循环中创建这个数组:
float[][] xyzw = new float[x][4];
x是您的顶点数