个性化阅读
专注于IT技术分析

JOGL旋转

本文概述

在JOGL中, 对象可以沿三个轴中的任何一个沿任何方向旋转。要旋转对象, 你需要执行以下步骤:-

  • 删除对象的先前状态以清除视图。为此, 你需要使用以下方法清除颜色和深度缓冲区:-
gl.glClear (GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT )
  • 现在, 借助glLoadIntensity()方法重置项目矩阵
  • 调用GLMatrixFunc接口的glRotatef()方法。

每秒帧动画师类

FPSAnimator类是Animator类的子类, 用于以每秒帧数的速度旋转对象。

FPSAnimator类的构造方法

建设者 描述
FPSAnimator(int fps) 它使用指定的目标每秒帧值创建一个FPSAnimator。
FPSAnimator(GLAutoDrawabledrawable, int fps) 它创建一个FPSAnimator, 它具有一个Intialdrawable来动画化和指定目标每秒帧值。
FPSAnimator(GLAutoDrawabledrawable, int fps, booleanscheduleAtFixedRate) 它创建一个FPSAnimator, 该对象具有用于绘制目标帧每秒指定值的intialdrawable动画, 以及一个用于指定是否使用固定速率调度的标志。
FPSAnimator(int fps, booleanscheduleAtFixedRate) 它使用指定的每秒目标帧值创建一个FPSAnimator, 该标志指定是否使用固定速率调度。

JOGL旋转示例

在此示例中, 我们将旋转一个三角形。

package com.srcmini.jogl;
import javax.media.opengl.GL2; 
	

import javax.media.opengl.*;
import javax.media.opengl.awt.GLCanvas; 

import javax.swing.JFrame; 

import com.jogamp.opengl.util.FPSAnimator; 

public class JRotation implements GLEventListener { 
public float rotation; 

   @Override 
public void display( GLAutoDrawable drawable ) {

final GL2 gl = drawable.getGL().getGL2(); 
gl.glClear (GL2.GL_COLOR_BUFFER_BIT |  GL2.GL_DEPTH_BUFFER_BIT );  

      // Clear The Screen And The Depth Buffer 
gl.glLoadIdentity();  // Reset The View     

      //triangle rotation      
gl.glRotatef( rotation, 0.0f, 1.0f, 0.0f );  


gl.glBegin(GL2.GL_TRIANGLES);     
      //Green Color
gl.glColor3f( 0.0f, 1.0f, 0.0f ); 
gl.glVertex2d(0, 0.5);
gl.glVertex2d(-0.5, -0.5);
gl.glVertex2d(0.5, -0.5);

gl.glEnd();

gl.glFlush(); 
      //Assign the angle
rotation += 0.6f;  
   } 
	
   @Override 
public void dispose( GLAutoDrawable arg0 ) { 
      //method body 
   } 

   @Override 
public void init( GLAutoDrawable arg0 ) { 
      // method body 
   }

   @Override 
public void reshape( GLAutoDrawable drawable, int x, int y, int width, int height ) { 
   }
public static void main( String[] args ) {
		
final GLProfile gp  = GLProfile.get(GLProfile.GL2 ); 
GLCapabilities cap  = new GLCapabilities(gp);

final GLCanvas gc = new GLCanvas(cap); 
JRotation jr = new JRotation(); 
gc.addGLEventListener(jr); 
gc.setSize( 400, 400 );  

final JFrame frame = new JFrame("JOGL Rotation");

frame.add(gc);
	frame.setSize(500, 400);
	frame.setVisible(true); 

final FPSAnimator animator = new FPSAnimator(gc, 400, true); 
animator.start(); 

   } 
	
}

输出:

JOGL旋转
赞(0)
未经允许不得转载:srcmini » JOGL旋转

相关推荐

评论 抢沙发

评论前必须登录!