2012-11-22 2 views
1

Я пытаюсь получить объект для вращения с помощью opengl и команды gl.glroate, но ничего похожего не происходит, может ли кто-нибудь показать мне, где я иду не так? Ниже приведен кодВращение объекта с помощью gl.glrotatef

import javax.media.opengl.*; 
import javax.media.opengl.glu.GLU; 
import javax.swing.JFrame; 
import com.sun.opengl.util.Animator; 
import com.sun.opengl.util.FPSAnimator; 

public class Cube2 implements GLEventListener { 

     private float Rotate = 0.0f; 

    private static final GLU glu = new GLU(); 

    /** 
    * @param args 
    */ 
    public static void main(String[] args){ 
     JFrame frame = new JFrame("A simple JOGL demo"); 
     GLCanvas canvas = new GLCanvas(); 
     canvas.addGLEventListener(new Cube2()); 
     frame.add(canvas); 
     frame.setSize(640, 480); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.setVisible(true); 

     Animator animator = new FPSAnimator(canvas, 60); 
     animator.add(canvas); 
    } 

@Override 
public void display (GLAutoDrawable glDrawable){ 
    final GL gl = glDrawable.getGL(); 
    //gl.glClear(GL.GL_COLOR_BUFFER_BIT); 
    gl.glClear(GL.GL_DEPTH_BUFFER_BIT); 
    gl.glLoadIdentity(); 
    gl.glTranslatef(0.0f, 0.0f, -7.0f); 
    gl.glRotatef(Rotate++, 1.0f, 0.0f, 0.0f); 
    gl.glRotatef(Rotate++, 0.0f, 1.0f, 0.0f); 
    gl.glRotatef(Rotate++, 0.0f, 0.0f, 1.0f); 


    gl.glBegin(GL.GL_TRIANGLES); 

    //Counter Clockwise Front Face 1 
     gl.glColor3f(0.0f, 1.0f, 0.0f); //Green 
     gl.glVertex3f (1.0f, 1.0f, 0.0f); //Top 
     gl.glVertex3f(-1.0f, 1.0f, 0.0f); // left to right  
     gl.glVertex3f (-1.0f, -1.0f, 0.0f); //left 
     gl.glVertex3f (-1.0f, -1.0f, -0.0f); //left   
     gl.glVertex3f(1.0f, -1.0f, -0.0f); //left to right  
     gl.glVertex3f (1.0f, 1.0f, -0.0f); //left 

    // Right Face 2 
     gl.glColor3f(1.0f, 0.0f, 1.0f); //Pink 
     gl.glVertex3f (1.0f, 1.0f, 0.0f);  
     gl.glVertex3f(1.0f, -1.0f, -0.0f);  
     gl.glVertex3f (1.0f, 1.0f, 1.0f);  
     gl.glVertex3f (-1.0f, -1.0f, -0.0f);   
     gl.glVertex3f(-1.0f, 1.0f, 0.0f);  
     gl.glVertex3f (-1.0f, -1.0f, -1.0f);   

    gl.glEnd(); 

} 

@Override 
public void displayChanged (GLAutoDrawable arg0, boolean arg1, boolean arg2) 
{ 
    //TODO Auto-generated method stub 
} 

@Override 
public void init(GLAutoDrawable glDrawable) 
{ 
    final GL gl = glDrawable.getGL(); 

    int width = 640; 
    int height = 480; 

    //Set the state of out new OpenGL context 
    gl.glViewport(0, 0, width, height); 
    gl.glMatrixMode(GL.GL_PROJECTION); 
    gl.glLoadIdentity(); 

    glu.gluPerspective(45.0f,(float)(width)/(float)(height),1.0f,100.0f); 
    gl.glMatrixMode(GL.GL_MODELVIEW); 
    gl.glLoadIdentity(); 

    gl.glShadeModel(GL.GL_SMOOTH);         //Enable Smooth Shading 
    gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);      //Black Background 
    gl.glClearDepth(1.0f);           //Depth Buffer Setup 
    gl.glEnable(GL.GL_DEPTH_TEST);         //Enables Depth Testing 
    gl.glDepthFunc(GL.GL_LEQUAL);         //The Type of Depth Testing To Do 
    gl.glEnable(GL.GL_CULL_FACE);         //Start culling back faces 
    gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);  //Really Nice Perspective Calculations 
} 

@Override 
public void reshape (GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4){ 
    //TODO Auto-generated method stub 
} 
} 

заранее спасибо за вашу помощь

ответ

0
  1. Вы должны начать с добавления

    animator.start();

    для того, чтобы начать реновацию.

  2. Вы используете JOGL 1, который больше не поддерживается. И это не сработает. Вы должны следить за учебниками на Jogamp.org.

  3. Вы используете проприетарный apis, как импорт com.sun.opengl.util.Animator; начать с. Это плохой выбор, если вы хотите получить помощь от людей, которые не имеют права использовать этот api. Как я уже сказал, вы можете перейти на jogamp.org для замены этого пакета с открытым исходным кодом.