JOGL - Rotasyon
Bu bölümde, JOGL kullanarak bir nesneyi nasıl döndüreceğinizi açıkladık. Nesnelerin döndürülmesi, üç eksenden herhangi biri boyunca yapılabilir.glRotatef(float angle, float x, float y, float z) yöntemi GLMatrixFuncarayüz. Bu yönteme bir dönme açısı ve parametre olarak x, y, z eksenleri aktarmanız gerekir.
Aşağıdaki adımlar, bir nesneyi başarıyla döndürmeniz için size yol gösterir -
Başlangıçta kullanarak renk arabelleğini ve derinlik arabelleğini temizleyin gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT)yöntem. Bu yöntem, nesnenin önceki durumunu siler ve görünümü netleştirir.
Projeksiyon matrisini sıfırlayın. glLoadIdentity() yöntem.
Animatör sınıfını örnekleyin ve animatörü kullanarak start() yöntem.
FPSAnimator Sınıfı
Aşağıda, FPSAnimator sınıfının çeşitli yapıcıları verilmiştir.
Sr.No. | Yöntemler ve Açıklamalar |
---|---|
1 | FPSAnimator(GLAutoDrawable drawable, int fps) Belirli bir hedef kare / saniye değerine sahip bir FPSAnimator ve canlandırmak için bir başlangıç çekilebilir oluşturur. |
2 | FPSAnimator(GLAutoDrawable drawable, int fps, boolean cheduleAtFixedRate) Belirli bir saniyede kare hedef değerine sahip bir FPSAnimator, canlandırmak için bir başlangıç çekilebilirliği ve sabit oranlı programlamanın kullanılıp kullanılmayacağını belirten bir bayrak oluşturur. |
3 | FPSAnimator(int fps) Belirli bir saniye başına kare hedefi değerine sahip bir FPSAnimator oluşturur. |
4 | Belirli bir hedef kare / saniye değerine sahip bir FPSAnimator oluşturur ve sabit oranlı programlamanın kullanılıp kullanılmayacağını belirten bir bayrak oluşturur. |
Belirli bir hedef kare / saniye değerine sahip bir FPSAnimator oluşturur ve sabit oranlı programlamanın kullanılıp kullanılmayacağını belirten bir bayrak oluşturur.
start() ve stop()bu sınıftaki iki önemli yöntemdir. Aşağıdaki program, FPSAnimator sınıfını kullanarak bir üçgenin nasıl döndürüleceğini gösterir -
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;
import com.jogamp.opengl.util.FPSAnimator;
public class TriangleRotation implements GLEventListener {
private float rtri; //for angle of 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( rtri, 0.0f, 1.0f, 0.0f );
// Drawing Using Triangles
gl.glBegin( GL2.GL_TRIANGLES );
gl.glColor3f( 1.0f, 0.0f, 0.0f ); // Red
gl.glVertex3f( 0.5f,0.7f,0.0f ); // Top
gl.glColor3f( 0.0f,1.0f,0.0f ); // blue
gl.glVertex3f( -0.2f,-0.50f,0.0f ); // Bottom Left
gl.glColor3f( 0.0f,0.0f,1.0f ); // green
gl.glVertex3f( 0.5f,-0.5f,0.0f ); // Bottom Right
gl.glEnd();
gl.glFlush();
rtri += 0.2f; //assigning the angle
}
@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 ) {
//getting the capabilities object of GL2 profile
final GLProfile profile = GLProfile.get(GLProfile.GL2 );
GLCapabilities capabilities = new GLCapabilities( profile );
// The canvas
final GLCanvas glcanvas = new GLCanvas( capabilities);
TriangleRotation triangle = new TriangleRotation();
glcanvas.addGLEventListener( triangle );
glcanvas.setSize( 400, 400 );
// creating frame
final JFrame frame = new JFrame ("Rotating Triangle");
// adding canvas to it
frame.getContentPane().add( glcanvas );
frame.setSize(frame.getContentPane() .getPreferredSize());
frame.setVisible( true );
//Instantiating and Initiating Animator
final FPSAnimator animator = new FPSAnimator(glcanvas, 300,true);
animator.start();
}
} //end of main
} //end of class
Yukarıdaki programı derler ve çalıştırırsanız, aşağıdaki çıktıyı üretir. Burada, renkli üçgenin x ekseni etrafında döndürülmesinin çeşitli anlık görüntülerini gözlemleyebilirsiniz.