Example #1
0
        private static Geometry createTesselatedBox2(int nsplit, float size)
        {
            Geometry  geometry = new Geometry();
            Vec3Array vertices = new Vec3Array();
            Vec3Array colors   = new Vec3Array();

            geometry.setVertexArray(vertices);
            geometry.setColorArray(colors, Array.Binding.BIND_PER_VERTEX);

            float step = size / nsplit;
            float s    = 0.5f / 4.0f;

            for (int i = 0; i < nsplit; i++)
            {
                float x = -1.0f + i * step;
                //std.cout << x << std.endl;
                vertices.push_back(new Vec3f(x, s, s));
                vertices.push_back(new Vec3f(x, -s, s));
                vertices.push_back(new Vec3f(x, -s, -s));
                vertices.push_back(new Vec3f(x, s, -s));
                Vec3f c = new Vec3f(0.0f, 0.0f, 0.0f);
                c[i % 3] = 1.0f;
                colors.push_back(c);
                colors.push_back(c);
                colors.push_back(c);
                colors.push_back(c);
            }

            UIntArray array = new UIntArray();

            for (uint i = 0; i < nsplit - 1; i++)
            {
                uint base1 = i * 4;
                array.push_back(base1);
                array.push_back(base1 + 1);
                array.push_back(base1 + 4);
                array.push_back(base1 + 1);
                array.push_back(base1 + 5);
                array.push_back(base1 + 4);

                array.push_back(base1 + 3);
                array.push_back(base1);
                array.push_back(base1 + 4);
                array.push_back(base1 + 7);
                array.push_back(base1 + 3);
                array.push_back(base1 + 4);

                array.push_back(base1 + 5);
                array.push_back(base1 + 1);
                array.push_back(base1 + 2);
                array.push_back(base1 + 2);
                array.push_back(base1 + 6);
                array.push_back(base1 + 5);

                array.push_back(base1 + 2);
                array.push_back(base1 + 3);
                array.push_back(base1 + 7);
                array.push_back(base1 + 6);
                array.push_back(base1 + 2);
                array.push_back(base1 + 7);
            }

            geometry.addPrimitiveSet(new DrawElementsUInt((uint)PrimitiveSet.Mode.TRIANGLES, array.size(), array.frontPtr()));
            geometry.getOrCreateStateSet().setMode(GL.GL_LIGHTING, (uint)false.ToStateAttributeValue());
            geometry.setUseDisplayList(false);
            return(geometry);
        }