প্রাথমিক শেপ তৈরি করা (Rectangle, Triangle, Circle)

2D গ্রাফিক্স এবং প্রাথমিক শেপ আঁকা - জোগল (JOGL) - Java Technologies

293

JOGL (Java OpenGL) হল Java এর জন্য OpenGL ইমপ্লিমেন্টেশন, যা গ্রাফিক্স এবং 3D রেন্ডারিং জন্য ব্যবহৃত হয়। JOGL ব্যবহার করে আপনি গ্রাফিক্সের শেপ যেমন Rectangle, Triangle, এবং Circle তৈরি করতে পারেন। এই শেপগুলো তৈরি করতে OpenGL Rendering Pipeline ব্যবহার করা হয়, যেখানে OpenGL ফাংশনগুলোর মাধ্যমে গ্রাফিক্স রেন্ডারিং প্রক্রিয়া পরিচালনা করা হয়।

এখানে আমরা JOGL ব্যবহার করে Rectangle, Triangle, এবং Circle তৈরি করার উদাহরণ দেখব।


JOGL সেটআপ এবং প্রয়োজনীয় ডিপেনডেন্সি

JOGL ব্যবহার করার জন্য প্রথমে আপনাকে প্রজেক্টে প্রয়োজনীয় লাইব্রেরি যুক্ত করতে হবে। নিচে Maven এর মাধ্যমে JOGL ডিপেনডেন্সি যুক্ত করার উদাহরণ দেওয়া হলো।

pom.xml (Maven Dependency for JOGL)

<dependency>
    <groupId>org.jogamp.gluegen</groupId>
    <artifactId>gluegen-rt</artifactId>
    <version>2.3.2</version>
</dependency>
<dependency>
    <groupId>org.jogamp.jogl</groupId>
    <artifactId>jogl-all</artifactId>
    <version>2.3.2</version>
</dependency>

এখানে gluegen-rt এবং jogl-all ডিপেনডেন্সিগুলি JOGL লাইব্রেরির জন্য প্রয়োজনীয়।


JOGL এর মাধ্যমে Rectangle, Triangle, এবং Circle তৈরি করা

JOGL-এ গ্রাফিক্স শেপ তৈরি করার জন্য আপনাকে GL, GLAutoDrawable, এবং GLEventListener এর মতো উপাদান ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Rectangle, Triangle, এবং Circle তৈরি করা হয়েছে।

1. Rectangle তৈরি করা

import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;

public class ShapeRenderer implements GLEventListener {

    @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
        
        // Draw Rectangle
        gl.glBegin(GL.GL_QUADS); // Start drawing a quadrilateral
        gl.glColor3f(1.0f, 0.0f, 0.0f); // Set color to red
        gl.glVertex2f(-0.5f, 0.5f); // Top left corner
        gl.glVertex2f(0.5f, 0.5f); // Top right corner
        gl.glVertex2f(0.5f, -0.5f); // Bottom right corner
        gl.glVertex2f(-0.5f, -0.5f); // Bottom left corner
        gl.glEnd(); // End drawing
    }

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

    @Override
    public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {
        // Handle display change if necessary
    }
}

এখানে, gl.glBegin(GL.GL_QUADS) ব্যবহার করে একটি Rectangle (চার কোণযুক্ত শেপ) তৈরি করা হয়েছে।


2. Triangle তৈরি করা

@Override
public void display(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();
    gl.glClear(GL.GL_COLOR_BUFFER_BIT); // Clear the screen

    // Draw Triangle
    gl.glBegin(GL.GL_TRIANGLES); // Start drawing a triangle
    gl.glColor3f(0.0f, 1.0f, 0.0f); // Set color to green
    gl.glVertex2f(0.0f, 0.5f); // Top vertex
    gl.glVertex2f(-0.5f, -0.5f); // Bottom left vertex
    gl.glVertex2f(0.5f, -0.5f); // Bottom right vertex
    gl.glEnd(); // End drawing
}

এখানে, gl.glBegin(GL.GL_TRIANGLES) ব্যবহার করে একটি Triangle তৈরি করা হয়েছে, যেখানে তিনটি পয়েন্ট নির্ধারণ করা হয়েছে।


3. Circle তৈরি করা

Circle তৈরি করতে কিছুটা জটিলতা থাকে কারণ OpenGL সরাসরি একটি Circle আঁকার জন্য কোনো ফাংশন প্রদান করে না। তবে, আপনি Polygon ব্যবহার করে সন্নিহিত পয়েন্টের মাধ্যমে একটি Circle রেন্ডার করতে পারেন।

@Override
public void display(GLAutoDrawable drawable) {
    GL gl = drawable.getGL();
    gl.glClear(GL.GL_COLOR_BUFFER_BIT); // Clear the screen

    // Draw Circle
    int numSegments = 100;
    float radius = 0.5f;
    gl.glBegin(GL.GL_POLYGON); // Start drawing a polygon (circle approximation)
    gl.glColor3f(0.0f, 0.0f, 1.0f); // Set color to blue

    for (int i = 0; i < numSegments; i++) {
        double angle = 2 * Math.PI * i / numSegments; // Angle for each segment
        float x = (float) (radius * Math.cos(angle)); // X coordinate
        float y = (float) (radius * Math.sin(angle)); // Y coordinate
        gl.glVertex2f(x, y); // Set vertex for the circle
    }

    gl.glEnd(); // End drawing
}

এখানে, GL.GL_POLYGON ব্যবহার করে একটি Circle তৈরি করা হয়েছে, যেখানে বিভিন্ন কোণ থেকে পয়েন্টগুলি চূড়ান্তভাবে জোড়া দিয়ে একটি সাপেক্ষিক Circle তৈরি করা হয়েছে।


GLContext এবং GLDrawable

GLAutoDrawable হলো একটি ইন্টারফেস যা OpenGL কনটেক্সট ড্রয়িং সক্ষম করে। এটি OpenGL কনটেক্সট তৈরি এবং রেন্ডারিং ফাংশনালিটি প্রদান করে, এবং ব্যবহারকারীর কোডে গ্রাফিক্স রেন্ডারিং ঘটায়।


JOGL অ্যাপ্লিকেশনে GL, GLAutoDrawable, GLEventListener এর ভূমিকা

  • GL: এটি OpenGL গ্রাফিক্স কনটেক্সট সরবরাহ করে এবং OpenGL ফাংশনগুলো চালানোর জন্য ব্যবহৃত হয়। GL ক্লাসের মাধ্যমে বিভিন্ন গ্রাফিক্স অপারেশন যেমন ভেক্টর ড্রয়িং, রেন্ডারিং, টেক্সচারিং ইত্যাদি করা হয়।
  • GLAutoDrawable: এটি একটি ইন্টারফেস যা গ্ল কনটেক্সট হ্যান্ডেল করে এবং ড্রয়িং বা রেন্ডারিং প্রক্রিয়া পরিচালনা করতে ব্যবহৃত হয়। এটি গ্রাফিক্স ড্রয়িং ফাংশনালিটি সরবরাহ করে এবং যখন গ্রাফিক্স পরিবর্তন হয় তখন repaint() কল করে।
  • GLEventListener: এটি OpenGL ইভেন্টগুলি যেমন ইনিশিয়ালাইজেশন, ডিসপ্লে, রিসাইজিং ইত্যাদি হ্যান্ডল করার জন্য ব্যবহৃত হয়। এটি init(), display(), reshape(), এবং displayChanged() মেথডগুলির মাধ্যমে গ্রাফিক্সের বিভিন্ন ইভেন্ট হ্যান্ডল করতে সহায়তা করে।

সারাংশ


JOGL (Java OpenGL) ব্যবহার করে Rectangle, Triangle, এবং Circle তৈরি করা যায়। এতে GL, GLAutoDrawable, এবং GLEventListener এর মাধ্যমে OpenGL গ্রাফিক্স কনটেক্সট এবং রেন্ডারিং ফাংশন পরিচালিত হয়। GL OpenGL ফাংশনালিটি সরবরাহ করে, GLAutoDrawable ড্রয়িং কনটেক্সট হ্যান্ডল করে এবং GLEventListener গ্রাফিক্স ইভেন্টগুলো পরিচালনা করে। JOGL এর মাধ্যমে Java এ গ্রাফিক্স এবং 3D শেপ তৈরি করা খুবই সহজ এবং কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...