1

opengl とコマンド gl.glroate を使用してオブジェクトを回転させようとしていますが、何も起こっていないようです。どこが間違っているのか教えてもらえますか? 以下はコードです

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
}
}

よろしくお願いします。

4

1 に答える 1

0
  1. 追加することから始める必要があります

    アニメーター.start();

    レンダリングを開始します。

  2. 現在メンテナンスされていない JOGL 1 を使用しています。そして、それは間違いなく機能しません。Jogamp.org のチュートリアルに従う必要があります。

  3. import com.sun.opengl.util.Animator; のような独自の API を使用しています。まず始めに。その API を使用する権利を所有していない人からの助けが必要な場合、それは悪い選択です。先ほど言ったように、jogamp.org にアクセスして、そのパッケージのオープン ソースの代替品を入手できます。

于 2012-12-20T06:34:59.143 に答える