0
我想圍繞一箇中心旋轉一條線,並在java opengl中使用動畫顯示旋轉。我想讓動畫更快地發生,也就是說我想在每隔0.5秒後清除畫布。我的猜測是setSwapInterval正在做的伎倆,但它只需要一個整數作爲參數,所以我不能真正改變小於1單位的動畫時間。如何在使用Animator的特定時間間隔之後刷新opengl(Java JOGL)顯示?
這應該很簡單,但我不知道哪個參數實際上控制動畫時間間隔。
我的全局變量:
double sec_theta = 0;
動畫製作獲取的主要方式開始:
Animator animator = new Animator(canvas);
animator.start();
的顯示方法:
@Override
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL2.GL_COLOR_BUFFER_BIT);
sec_theta -=6;
double r = .6;
double x_center = 0;
double y_center = 0;
rotate_line(r,x_center,y_center,r-.1,0,gl);
}
這是繪圖一事無成:
public void rotate_line(double r,double x_center, double y_center,double sec_x, double sec_y, GL2 gl){
double radian = Math.toRadians(sec_theta);
double new_x = sec_x*Math.cos(radian)-sec_y*Math.sin(radian);
double new_y = sec_x*Math.sin(radian)+sec_y*Math.cos(radian);
double new_x_center = x_center*Math.cos(radian)-y_center*Math.sin(radian);
double new_y_center = x_center*Math.sin(radian)+y_center*Math.cos(radian);
drawHand(new_x_center,new_y_center,new_x,new_y,gl);
}
public void drawHand(double x_center,double y_center,double end_x, double end_y, GL2 gl){
gl.glBegin (GL2.GL_LINES);
gl.glColor3f(1, 1, 1);
gl.glVertex3d(x_center,y_center, 0);
gl.glVertex3d(end_x,end_y, 0);
gl.glEnd();
gl.glFlush();
}
init方法:
@Override
public void init(GLAutoDrawable drawable) {
drawable.getGL().setSwapInterval(1);
}
請修復您的第一個鏈接,使用我們的API的更新Java文檔:http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/ – gouessej
完成後,您還可以編輯,如果你想 – elect