Lines and Index Buffers

Hi Folks,



I am trying to create a series of line segments using a small number of points and a larger number of segments.  It seems like I should be able to specify the vertices using a vertex buffer and the connectivity using an index buffer.  It appears, though, that I can specify no more indices than the number of vertices I have.



The following simple code example illustrates the issue.  I have 4 vertices and want to draw 3 segments between them.  I specify this by setting the index buffer to 0, 1, 2, 3, 1, 2.  However, I only get segments from 0 to 1 and 2 to 3.  Is there a way to get all 3 segments to show up without having to repeat vertices?



package sandbox;

import java.nio.*;

import com.jme.app.*;
import com.jme.renderer.ColorRGBA;
import com.jme.scene.Line;
import com.jme.scene.state.MaterialState;
import com.jme.util.geom.BufferUtils;

public class LineTest extends SimpleGame
{
    @Override
    protected void simpleInitGame()
    {
        Line foo = new Line("LINE");
        foo.setMode(Line.SEGMENTS);
        FloatBuffer vertices = BufferUtils.createVector3Buffer(4);
        //4 vertices
        vertices.put(new float[]{-1.0f, -1.0f, 0.0f});
        vertices.put(new float[]{ 1.0f, -1.0f, 0.0f});
        vertices.put(new float[]{ 1.0f,  1.0f, 0.0f});
        vertices.put(new float[]{-1.0f,  1.0f, 0.0f});
        IntBuffer indices = BufferUtils.createIntBuffer(6);
        //3 pairs--I want 3 segments, but I only get 2
        indices.put(new int[]{0, 1, 2, 3, 1, 2});
        foo.setVertexBuffer(0, vertices);
        foo.setIndexBuffer(indices, 0);
       
        MaterialState ms = display.getRenderer().createMaterialState();
        ms.setAmbient(ColorRGBA.red);
        ms.setDiffuse(ColorRGBA.red);
        foo.setRenderState(ms);
       
        rootNode.attachChild(foo);
    }
   
    public static void main(String[] args)
    {
        new LineTest().start();
    }
}



Thanks!

the index buffers size has to be the size of the vertices as far as i know … if you want to draw a line from 1 to 4 over 2 and 3 your indes buffer is {0, 1, 2, 3}.



If you want to make better looking lines you could use the TrailMesh or Ribbon.



TrailMesh: http://www.jmonkeyengine.com/jmeforum/index.php?topic=8288.0

Ribbon: http://www.jmonkeyengine.com/jmeforum/index.php?topic=8674.0



so long,

Hmm,actually that's a limit set in the renderer… we could probably change that

Yeah, that would be cool.  Right now I have to set every vertex in the vertex buffer (with many repeats) and then create an int array from [0, size-1], which is pretty pointless.  Thanks!

Should this get filed as a bug report, or is it more of a feature request?  Based on expected OpenGL vertex buffer behavior I would think this was a bug.

I've also problems with this.



Any change it will be fixed in SVN?