导出在sketchup中创建的用于Android的三维模型

导出在sketchup中创建的用于Android的三维模型,android,opengl-es,sketchup,Android,Opengl Es,Sketchup,我在android上使用opengl绘制简单矩形时遇到问题。 这就是我所做的 我用sketchup画了一个简单的矩形。我使用 三维模型collada.dae文件。然后我从中复制了顶点数据 .dae(xml)文件并放入数组中。我用本机复制了数组 格式化为浮点缓冲区。然后我用条纹画三角形 模式结果几乎是一个矩形。上面缺少一个三角形 每个表面 下面是代码的相关部分和结果 public void draw(GL10 gl) { gl.glVertexPointer(3, GL10.GL_FLOA

我在android上使用opengl绘制简单矩形时遇到问题。 这就是我所做的

我用sketchup画了一个简单的矩形。我使用 三维模型collada.dae文件。然后我从中复制了顶点数据 .dae(xml)文件并放入数组中。我用本机复制了数组 格式化为浮点缓冲区。然后我用条纹画三角形 模式结果几乎是一个矩形。上面缺少一个三角形 每个表面

下面是代码的相关部分和结果

public void draw(GL10 gl) {
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
    // Enable color tracking
    gl.glEnable(GL10.GL_COLOR_MATERIAL);
    for (int i=0; i<108/4; i=i+4) {
        myDrawColor(gl,i);
        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,i,4);// mode, first, count
    }
}
公共作废提取(GL10 gl){
gl.glVertexPointer(3,GL10.gl_FLOAT,0,mVertexBuffer);
//启用颜色跟踪
glEnable(GL10.Glu颜色材料);

对于(int i=0;i您的顶点列表中的顶点顺序可能错误(这可能是导出的错误)。这是当我的四边形顶点位于错误的位置时,我从四边形中得到的。您将希望从外部逆时针构建它们。也可能是三角形带导致顶点出现问题,对于这样简单的应用程序,您可以尝试使用GL_四边形。

我得到了代码。有三个问题

  • DrawArrays通过顶点数组向前工作。也就是说,您一次从数组中绘制一个元素,然后转到下一个元素。您不能在其中来回跳跃
  • 使用.xml文件中的偏移量列表,我创建了一个数组,我可以将它用于gldrawerelements,它在顶点列表中跳跃
  • 您需要使用无符号短偏移量。我使用的是一个整数并修复了它,但它不起作用
  • 下面是运行的结果代码。问题出在我身上,而不是sketchup生成的.xml文件

    public void draw(GL10 gl) {
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
        gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorsBuffer);
        gl.glEnable(GL10.GL_COLOR_MATERIAL); 
    // Enable color tracking 
        gl.glEnable(GL10.GL_COLOR_MATERIAL);
        gl.glDrawElements(GL10.GL_TRIANGLES, myoffsets.length, GL10.GL_UNSIGNED_SHORT, mIndicesBuffer); // mode, count, type, indices
    }