Hallo zusammen,
ich habe leider wieder ein Problem :
Warum wird beim Mausklick nun egal WO ich hinklicke immer die paintRotated(gl,gewuerfelt1); ausgeführt ?? Also gl.glLoadName(1); ??
Er sagt mir immer Hits=2, das ist ja soweit klar, leider weiß ich nicht wie ich den Bereich eingrenzen kann. Den er soll das nur ausführen wenn Würfel1 geklickt wird.
ich habe leider wieder ein Problem :
Code:
public void display(GLAutoDrawable drawable) {
gl.glSelectBuffer(MAXSELECT, selectBuf); //Den Puffer zuordnen
gl.glRenderMode(GL_SELECT);
// clear name stack
gl.glInitNames(); // Name-Stack initialisieren
gl.glPushName(~0); // "Name" "0" auf diesen Stack gelegt wird. Nötig sonst Exception
IntBuffer vp = IntBuffer.allocate(15);
gl.glGetIntegerv(GL_VIEWPORT, vp); //Die Sicht speichern
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glPushMatrix(); //Um die Matrix zu sichern
gl.glLoadIdentity(); //Und dieselbige wieder zurückzusetzen
glu.gluPickMatrix(x_mouse, vp.get(3) - y_mouse, 5.0, 5.0, vp);
glu.gluPerspective(100.0,((float)width)/((float)height),0.1, 100);
gl.glMatrixMode(GL.GL_MODELVIEW); // now back to model view so that we
drawScene(gl,true);
int hits = gl.glRenderMode(GL_RENDER);
System.out.println("hits: "+hits);
if (hits>1) {
gl.glEnable(GL_LIGHT1);
int index = (hits-1)*4+3;
if ((index<0) || (index>selectBuf.capacity())) {
} else {
selectedName = selectBuf.get((hits-1)*4+3);
if (selectedName==1) {
wu1 = true;
System.out.println("Name getroffen: "+selectedName+" ! ");
}
if (selectedName==2) {
wu2 = true;
System.out.print("Name getroffen: "+selectedName+" ! ");
}
if (selectedName==3) {
wu3 = true;
System.out.print("Name getroffen: "+selectedName+" ! ");
}
}
}
select = false;
gl.glMatrixMode(GL_PROJECTION);
gl.glPopMatrix(); // vorherige Projektionsmatrix vom Stack laden
gl.glMatrixMode(GL_MODELVIEW); // now back to model view so that we
}
Code:
public void mousePressed(MouseEvent e) {
x_mouse = e.getX();
y_mouse = e.getY();
//if(m!=null && !m.getWait())
select = true;
if ((e.getModifiers() & e.BUTTON1_MASK) != 0) {
select = true;
}
if ((e.getModifiers() & e.BUTTON3_MASK) != 0) {
menu.show(gui,x_mouse,y_mouse);
}
}
Code:
private void drawScene(GL gl, boolean select)
{
gl.glPushMatrix();
gl.glTranslated(0,-6.48,-5);
if (select)
gl.glLoadName(1);
StartRotation(gl,gewuerfelt1);
gl.glPopMatrix();
gl.glPushMatrix();
if(wu1){
gl.glTranslatef(-0.6f, 0.0f,0.15f);
paintRotated(gl,gewuerfelt1);
}
gl.glPopMatrix();
gl.glPushMatrix();
gl.glTranslated(1,-6.48,-6);
if (select)
gl.glLoadName(2);
StartRotation(gl,gewuerfelt2);
gl.glPopMatrix();
gl.glPushMatrix();
if(wu2){
gl.glTranslatef(-5.6f, 0.0f,0.15f);
paintRotated(gl,gewuerfelt2);
}
gl.glPopMatrix();
}
Warum wird beim Mausklick nun egal WO ich hinklicke immer die paintRotated(gl,gewuerfelt1); ausgeführt ?? Also gl.glLoadName(1); ??
Er sagt mir immer Hits=2, das ist ja soweit klar, leider weiß ich nicht wie ich den Bereich eingrenzen kann. Den er soll das nur ausführen wenn Würfel1 geklickt wird.