JOGL (Java OpenGL) Java অ্যাপ্লিকেশনে OpenGL গ্রাফিক্স ব্যবহার করার জন্য একটি লাইব্রেরি, যা আপনাকে গ্রাফিক্স রেন্ডারিং এবং ইউজার ইন্টারঅ্যাকশন পরিচালনা করতে সক্ষম করে। GLEventListener এর মাধ্যমে keyboard এবং mouse ইন্টারঅ্যাকশন পরিচালনা করা যায়, যেখানে ইউজার কী-বোর্ড এবং মাউসের ইনপুটের মাধ্যমে গ্রাফিক্সে পরিবর্তন আনতে পারে।
JOGL ইউজার ইন্টারঅ্যাকশন ব্যবস্থাপনা করতে GLEventListener ইন্টারফেসের বিভিন্ন মেথড সরবরাহ করে। এই মেথডগুলো ব্যবহার করে আপনি মাউস ক্লিক, কী-বোর্ড ইনপুট এবং অন্যান্য ইউজার ইন্টারঅ্যাকশন হ্যান্ডেল করতে পারেন।
এখানে, আমরা keyboard এবং mouse এর মাধ্যমে ইউজার ইন্টারঅ্যাকশন পরিচালনার একটি উদাহরণ দেখবো।
Keyboard Interaction উদাহরণ
Keyboard Interaction এর মাধ্যমে আপনি কী-বোর্ডের কী প্রেস করলে OpenGL গ্রাফিক্সে কিছু পরিবর্তন করতে পারেন, যেমন, একটি অবজেক্টের অবস্থান পরিবর্তন করা, রঙ পরিবর্তন করা ইত্যাদি।
Keyboard Interaction উদাহরণ (Cube Move Using Arrow Keys):
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLCanvas;
import com.jogamp.newt.event.KeyAdapter;
import com.jogamp.newt.event.KeyEvent;
public class KeyboardInteractionExample implements GLEventListener {
private float xPosition = 0.0f;
private float yPosition = 0.0f;
@Override
public void init(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black
}
@Override
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT); // Clear the screen
gl.glLoadIdentity(); // Reset the modelview matrix
gl.glTranslatef(xPosition, yPosition, -6.0f); // Translate the object based on key inputs
gl.glColor3f(1.0f, 0.0f, 0.0f); // Red color for the object
gl.glBegin(GL.GL_QUADS); // Drawing a square as a placeholder for a cube
gl.glVertex2f(-1.0f, 1.0f);
gl.glVertex2f(1.0f, 1.0f);
gl.glVertex2f(1.0f, -1.0f);
gl.glVertex2f(-1.0f, -1.0f);
gl.glEnd();
}
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
gl.glViewport(x, y, width, height); // Adjust the viewport
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-2.0f, 2.0f, -2.0f, 2.0f, 1.0f, -1.0f); // Set orthogonal projection
gl.glMatrixMode(GL.GL_MODELVIEW);
}
@Override
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
// Handle display changes
}
public void addKeyListener(GLCanvas canvas) {
// Add KeyListener to the canvas to listen to keyboard events
canvas.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT) {
xPosition -= 0.1f; // Move the object left
} else if (key == KeyEvent.VK_RIGHT) {
xPosition += 0.1f; // Move the object right
} else if (key == KeyEvent.VK_UP) {
yPosition += 0.1f; // Move the object up
} else if (key == KeyEvent.VK_DOWN) {
yPosition -= 0.1f; // Move the object down
}
}
});
}
}
এখানে:
- KeyAdapter ব্যবহার করে keyboard events হ্যান্ডেল করা হয়েছে।
- Arrow keys (left, right, up, down) প্রেস করার মাধ্যমে কিউবের অবস্থান পরিবর্তন করা হচ্ছে।
- GLCanvas.addKeyListener এর মাধ্যমে কী-বোর্ডের ইনপুট গ্রহণ করা হচ্ছে।
Mouse Interaction উদাহরণ
Mouse Interaction এর মাধ্যমে আপনি মাউসের ইনপুট যেমন ক্লিক বা মুভমেন্ট দিয়ে গ্রাফিক্সে পরিবর্তন আনতে পারেন। মাউসের click, drag, move ইত্যাদি ইনপুট নিয়ে 2D এবং 3D অবজেক্টে পরিবর্তন করা যায়।
Mouse Interaction উদাহরণ (Move Object with Mouse Click):
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLCanvas;
import com.jogamp.newt.event.MouseAdapter;
import com.jogamp.newt.event.MouseEvent;
public class MouseInteractionExample implements GLEventListener {
private float xPosition = 0.0f;
private float yPosition = 0.0f;
@Override
public void init(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black
}
@Override
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT); // Clear the screen
gl.glLoadIdentity(); // Reset the modelview matrix
gl.glTranslatef(xPosition, yPosition, -6.0f); // Translate the object based on mouse click
gl.glColor3f(0.0f, 1.0f, 0.0f); // Green color for the object
gl.glBegin(GL.GL_QUADS); // Drawing a square as a placeholder for a cube
gl.glVertex2f(-1.0f, 1.0f);
gl.glVertex2f(1.0f, 1.0f);
gl.glVertex2f(1.0f, -1.0f);
gl.glVertex2f(-1.0f, -1.0f);
gl.glEnd();
}
@Override
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {
GL gl = drawable.getGL();
gl.glViewport(x, y, width, height); // Adjust the viewport
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrtho(-2.0f, 2.0f, -2.0f, 2.0f, 1.0f, -1.0f); // Set orthogonal projection
gl.glMatrixMode(GL.GL_MODELVIEW);
}
@Override
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
// Handle display changes
}
public void addMouseListener(GLCanvas canvas) {
// Add MouseListener to the canvas to listen to mouse events
canvas.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
// Get the mouse click position
xPosition = e.getX() / 100.0f - 1.0f;
yPosition = -e.getY() / 100.0f + 1.0f;
}
});
}
}
এখানে:
- MouseAdapter ব্যবহার করে mouse events হ্যান্ডেল করা হয়েছে।
- mousePressed() মেথডের মাধ্যমে মাউস ক্লিকের অবস্থান (X, Y) গ্রহণ করা হয়েছে এবং অবজেক্টের স্থান পরিবর্তন করা হয়েছে।
সারাংশ
- Keyboard Interaction: KeyAdapter ব্যবহার করে keyboard events যেমন arrow keys, enter, escape কী প্রেস করে গ্রাফিক্সে পরিবর্তন করা যায়।
- Mouse Interaction: MouseAdapter ব্যবহার করে mouse events যেমন ক্লিক এবং মুভমেন্ট ব্যবহার করে গ্রাফিক্সের অবস্থান পরিবর্তন করা যায়।
JOGL (Java OpenGL) ব্যবহার করে আপনি সহজেই ইউজার ইন্টারঅ্যাকশন পরিচালনা করতে পারেন এবং গ্রাফিক্সে মাউস এবং কী-বোর্ডের ইনপুটের মাধ্যমে ডায়নামিক পরিবর্তন আনতে পারেন। GLEventListener এর মাধ্যমে আপনি OpenGL রেন্ডারিং এবং ইভেন্ট হ্যান্ডলিংয়ের জন্য কার্যকরী কাস্টমাইজেশন করতে পারবেন।
Read more