有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JoGL不在循环中绘制

我已经在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();
    }

然后我得到一个扭曲的形状,但是如果没有这些无关的顶点,什么都不会被渲染


共 (1) 个答案

  1. # 1 楼答案

    你的问题是:

    float[] xyzw = new float[4];
    

    这个数组应该处于循环外,因为每个迭代都会初始化和填充这个数组。 为了解决您的问题,必须在循环外创建此数组:

    float[][] xyzw = new float[x][4];
    

    x是你的顶点数