Olá pessoa estou com problemas em colocar o formato de linhas na minha aplicação.
Quando coloco um formato de linha para uma unica linha ele modifica as linhas q eu ja desenheipara aquele formato e desenha as proximas linhas usando o mesmo formato para todas sem deixar eu modificar o formato das proximas,será q algué sabe o q eu devo fazer para ajeitar isso.Está aí o codigo:
public class Tracando implements GLEventListener{
private GL gl;
private GLU glu;
private GLAutoDrawable drawable;
//Controle de desenhar/limpar a tela
private int control = 0;
//Vetor com as componentes da cor
private float[] color = new float[4];
//Vector para guardar as primitivas correntes
private static Vector<Primitivas> primitivas;
//Indicador de qual algoritmo utilizar
private int algoritmo = 0;
//Para marcar o tempo
private int index;
private GregorianCalendar cal;
private long initTime;
public static long finalTime = 0;
private double multX, multY;
private double movX,movY;
private double rotX,rotY;
/**
* Cria uma nova instancia de Tracando
*/
public Tracando(){
primitivas = new Vector<Primitivas>();
}
public static void addPrimToVector(Primitivas p){
primitivas.add(p);
}
/**
* M�todo para inicializar a amostragem do desenho
* @param drawableB
*/
public void init(GLAutoDrawable drawableB){
//Define a cor inicial padr�o (preto)
for(int i = 0; i < color.length; i++){
color[i] = 0.0f;
}
drawable = drawableB;
gl = drawable.getGL();
glu = new GLU();
//Cor de fundo (branco)
gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
gl.glMatrixMode(GL.GL_PROJECTION);
//Transforma a canvas para 2d, valores de x e y em pixels
glu.gluOrtho2D(0,600,600,0);
gl.glMatrixMode(GL.GL_MODELVIEW);
}
/**
* M�todo para dar o refresh na tela
* @param drawableB
*/
public void display(GLAutoDrawable drawableB){
gl.glLoadIdentity();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
//Caso haja algo para ser desenhado
cal = new GregorianCalendar();
initTime = cal.getTimeInMillis();
for(int i = 0; i < primitivas.size(); i++){
Primitivas p = primitivas.get(i);
setColor(p.getColor());
p.desenha(this);
//p.desenha(p.getX(),p.getY(),p.getEsp(),p.getFormat(),p.getFator(),p.getTipo());
}
cal = new GregorianCalendar();
finalTime = cal.getTimeInMillis() - initTime;
gl.glFlush();
}
public void desenha(Vector <Double> x,Vector <Double> y,float esp,int format,int fator,char tipo){
System.out.println("bbbbX1 - "+x.get(0)+" Y1 - "+y.get(0)+" X2 - "+x.get(1)+" Y2 - "+y.get(1));
System.out.println(format);
if(tipo=='L'){
if(x.size()==2){
//EXPESSURA DA LINHA
if(format!=0x0F0F){
gl.glEnable(gl.GL_LINE_STIPPLE);
gl.glLineStipple(fator,(short) format);
}
gl.glEnable(gl.GL_LINE_WIDTH);
gl.glLineWidth(esp);
gl.glBegin(gl.GL_LINES);
gl.glVertex2d(x.get(0),y.get(0));
gl.glVertex2d(x.get(1),y.get(1));
gl.glEnd();
// gl.glPushAttrib(10);
}else{
if(format!=0x0F0F){
gl.glEnable(gl.GL_LINE_STIPPLE);
gl.glLineStipple(fator,(short) format);
}
gl.glEnable(gl.GL_LINE_WIDTH);
gl.glLineWidth(esp);
gl.glBegin(gl.GL_LINE_LOOP);
for(int i = 0;i < x.size();i++){
gl.glVertex2d(x.get(i), y.get(i));
}
gl.glEnd();
}
}else{
if(tipo=='P'){
gl.glBegin(gl.GL_POLYGON);
for(int i = 0;i < x.size();i++){
gl.glVertex2d(x.get(i), y.get(i));
}
gl.glEnd();
}
}
// gl.glMap2f(fator, esp, esp, fator, fator, esp, esp, fator, fator, arg9);
}
DEVE ESTÁ POR AKI O ERRO.OLHAEM PRINCIPALMENTE A CLASSE DESENHA E MI DIGAM O Q FAZER.OBRIGADO.