অ্যান্ড্রয়েড ওপেনজিএল ইএস এবং 2 ডি


96

ঠিক আছে, এখানে আমার অনুরোধ। আমি ওপেনজিএলটি ইতিমধ্যে জানি না এবং আমি এটি শিখতে আগ্রহী নই, তবে আমি ওপেনজিএল ইএস সরাসরি শিখতে চাই যেহেতু আমি আমার বিকাশকে অ্যান্ড্রয়েডের দিকে লক্ষ্য করছি। আমার 2 ডি গেমগুলি বিকাশের জন্য আমি ওপেনজিএল ইএস শিখতে চাই । আমি পারফরম্যান্সের উদ্দেশ্যে এটি বেছে নিয়েছি (যেহেতু আরটি গেমসের ক্ষেত্রে এটি বেসিক সারফেসভিউ অঙ্কনটি দক্ষ নয়)। আমার প্রশ্ন: কোথায় শুরু করব? আমি গুগল ব্রাউজ করে এক মাসেরও বেশি সময় ব্যয় করেছি এবং কিছু টিউটোরিয়াল / উদাহরণগুলি চেষ্টা করে দেখেছি / কোথাও খুঁজে পেয়েছি তবে সত্য কথা বলতে, এটি তেমন কিছু করতে পারেনি এবং এটি দুটি কারণে রয়েছে:

  1. আমি যে সমস্ত নিবন্ধ / টিউটোরিয়াল নিয়ে এসেছি সেগুলি প্রায় 3 ডি সম্পর্কিত (আমি কেবল আমার 2 ডি স্প্রাইটস অঙ্কন কীভাবে করব তা শিখতে চাই)
  2. সমস্ত নিবন্ধগুলি নির্দিষ্ট বিষয়গুলিকে লক্ষ্য করে যেমন থেকে শুরু করার কোনও ভিত্তি নেই যেমন: "কীভাবে একটি ত্রিভুজ আঁকতে হবে (উল্লম্ব সহ)", "কিভাবে একটি জাল তৈরি করবেন" ইত্যাদি।

আমি কিছু উত্স কোডও পড়ার চেষ্টা করেছি (উদা: রেপ্লিকা দ্বীপ) তবে কোডগুলি খুব জটিল এবং এতে প্রয়োজনীয় অনেকগুলি বিষয় রয়েছে; ফলাফল: আমি অদ্ভুত শ্রেণির নাম এবং স্টাফ সহ 100। জাভা ফাইলের মধ্যে হারিয়ে যাই।

আমি অনুমান করি যে আমি যা খুঁজছি তার মতো কোনও কোর্স নেই তবে আমি কী খুশি তা জানতে কেউ যদি আমাকে কিছু গাইডলাইন এবং কিছু লিঙ্ক দিতে পারে তবে আমি খুব খুশি হব (কেবল ওপেনজিএল ইএস 2 ডি স্প্রিটস রেন্ডারিং! কিছুই না 3D )।


33
and I'm not willing to learn itএখানে একটি প্রশ্ন শুরু করার খুব ভাল উপায় নয়
ফালমারি

62
দয়া করে আমার পুরো প্রশ্নটি পড়ুন, আপনি এর একটি সংবেদনশীল অংশ নিয়েছেন এবং সবচেয়ে গুরুত্বপূর্ণ সমাপ্তিটি ছেড়ে দিয়েছেন: "আমি ওপেনজিএলটি ইতিমধ্যে জানি না, এবং আমি এটি শিখতে রাজি নই, আমি ওপেনজিএল ইএস সরাসরি শিখতে চাই যেহেতু আমি অ্যান্ড্রয়েডে আমার বিকাশকে লক্ষ্য করে "যদি আমি এম্বেড থাকা ডিভাইসে কেবল ওপেনগিএল ইএস নিয়ে কাজ করতে যাচ্ছি তবে ওপেনজিএল শেখার কী লাভ? চিয়ার্স
কুল স্ট্র্যু

5
ওপেনজিএল ইএস বেশিরভাগ ওপেনগিএলের একটি উপসেট বলে দেওয়া হয়েছে, আপনি যে ওপেনজিএল শিখছেন না তা বলার বিন্দুটি আমি দেখতে পাচ্ছি না, কারণ সংজ্ঞা অনুসারে আপনাকে যা করতে হবে।
ড্যাশ-টম-ব্যাং

4
বিটিডাব্লু- রেপ্লিকা দ্বীপটি দেখতে বেশ সুন্দর জায়গা। আপনি এটি দিয়ে শুরু করতে এবং এটি পরিবর্তন করে শুরু করতে পারেন। আপনি চাইবেন না বা প্রয়োজন নেই এমন স্ট্রিপগুলি স্ট্রিপ করুন এবং তারপরে 100 ক্লাস 99 হয়ে 98 তারপর 98 হবে 97 ...
ড্যাশ-টম-ব্যাং

উত্তর:


85

আমিও একই রকম অবস্থায় ছিলাম।
ওপেনজিএল দিয়ে আমি যেভাবে শুরু করেছি খুব বেসিক জিএলসুরফেসভিউ নমুনা / ডেমো দেখে।

আপনার অ্যাপ্লিকেশন ক্রিয়াকলাপটি সেটআপ করে এবং প্রাথমিক ক্যানভাস সেট আপ করুন by

প্রতিরূপ দ্বীপ উত্স কোড ফাইলটিতে একটি লুট নিন: কীভাবে 2 ডি (স্প্রাইট) রেন্ডারিংয়ের জন্য সঠিক জিএল পতাকাগুলি দিয়ে আপনার ক্যানভাসটি সেটআপ করতে গেমরেন্ডারআর জাভা। : আপনি সত্যিই প্রতিরূপ দ্বীপের একই লেখক দ্বারা SpriteMethodTest কটাক্ষপাত করা উচিত http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest

এই প্রশ্নটি যেখানে আমি আমার নিজস্ব কোড পোস্ট করেছি তা দেখুন: ক্যানভাস - অ্যান্ড্রয়েড প্রতিস্থাপনের জন্য ওপেনজিএল ব্যবহার করুন

আপনার ক্যানভাসটি সেট আপ করার পরে, আপনি যেমন: gl.glClear (GL10.GL_COLOR_BUFFER_BIT) কল করে শুরু করবেন;

এর পরে আপনি একটি স্প্রিট রেন্ডার করতে প্রস্তুত। প্রথমত, আপনাকে একটি টেক্সচারে স্প্রিটটি লোড করতে হবে: http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html

যাইহোক, এই টিউটোরিয়াল যে সত্যিই আমাকে লোড sprites সাথে আউট সাহায্য করেছে হল: http://tkcodesharing.blogspot.com/2008/05/working-with-textures-in-androids.html

আমি এটি এটিই করি, টেক্সচার.জভা নামে আমার একটি ক্লাস রয়েছে:

public class Texture
{
    /*Begin public declarations*/
    public float x = 0;
    public float y = 0;
    public float z = 0;
    public float width = 0;
    public float height = 0;
    /*Begin Private Declarations*/
    private GL10 gl;
    public int[] texture;    //holds the texture in integer form
    private int texture_name;
    private int[] mCropWorkspace;
    private final BitmapFactory.Options sBitmapOptions;


/*Begin Methods*/
public Texture( GL10 gl_obj )
{
    gl = gl_obj;
    texture = new int[1];
    mCropWorkspace = new int[4];
    sBitmapOptions = new BitmapFactory.Options();
    sBitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
    //Log.d(TAG, "Initializing Texture Object");
}    
public int get_texture_name( )
{
    return texture_name;
}

/*Loads the resource to memory*/
public boolean Load( Bitmap bitmap ) //rename this to glLoad and don't have it as an initializer parameter
{
    /*many thanks to sprite method test if this works*/
    if ( gl == null )
    {
        Log.e(TAG, "Failed to load resource.  Context/GL is NULL");
        return false;
    }
    int error;

    int textureName = -1;
    gl.glGenTextures(1, texture, 0);
    textureName = texture[0];

    //Log.d(TAG, "Generated texture: " + textureName);
    gl.glBindTexture(GL10.GL_TEXTURE_2D, textureName);
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
    gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE);

    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);

    mCropWorkspace[0] = 0;
    mCropWorkspace[1] = bitmap.getHeight();
    mCropWorkspace[2] = bitmap.getWidth();
    mCropWorkspace[3] = -bitmap.getHeight();

    ((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D, 
            GL11Ext.GL_TEXTURE_CROP_RECT_OES, mCropWorkspace, 0);

    error = gl.glGetError();
    if (error != GL10.GL_NO_ERROR)
    { 
        Log.e(TAG, "GL Texture Load Error: " + error);

    }
    //Log.d(TAG, "Loaded texture: " + textureName);
    return true;
 }
}

তারপরে আমার অনড্রেম ফ্রেম () পদ্ধতিতে আমি কেবল এটি করি:

Texture texture = ...
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture.texture[0]);
((GL11Ext) gl).glDrawTexfOES((float)(draw_x + 0.5), (float)(draw_y + 0.5), 0, tile_width, tile_height);

এটি আপনাকে একটি ওপেনজিএল ক্যানভাসে 2D স্প্রিট আঁকার সাথে চালিত করা উচিত। আমি লক্ষ করেছি যে এটির জন্য আসলে কোনও সহজ টিউটোরিয়াল নেই। আশা করি ভবিষ্যতে আমি আমার দেব ব্লগে একটি পোস্ট করব: http://developingthedream.blogspot.com/


7
বাবু আপনাকে অনেক ধন্যবাদ! আমি এর মতো দিকনির্দেশ কখনও পাইনি, ঠিক এটিই আমি খুঁজছিলাম! এবং আমি আপনার ব্লগে নজর রাখব, আশা করি আপনি আমাদের ভবিষ্যতে একটি দুর্দান্ত টিউটোরিয়াল সরবরাহ করবেন :), আবারও আপনাকে অনেক ধন্যবাদ
CoolStraw

4
ওপি হিসাবে একই পরিস্থিতিতে এবং আপনার উত্তর দেওয়ার জন্য তাঁর মতো কৃতজ্ঞ। আপনার গেম / ব্লগের জন্য শুভকামনা। thx আবার
UNR করুন

4
আপনাকে ধন্যবাদ মিগুয়েল মোরেলস আমি জিএল দিয়ে 2 ডি অঙ্কনের সন্ধানে ক্লান্ত হয়ে পড়েছিলাম। কুলস্ট্রাও যেমন বলেছে যে এতে প্রচুর অপ্রয়োজনীয় জিনিস রয়েছে তার সাথে অনেক বেশি টিউটোরিয়াল রয়েছে। সেই উত্তরটি স্ফটিকের মতো পরিষ্কার ছিল was
এভরেন ওজটর্ক

@ মিগুয়েল মোরেলস প্রচুর চেষ্টা করার পরেও আমার টেক্সচারটি কালো দেখায় এটি কিছুই আঁকতে পারি না। আমি একটি প্রশ্ন জিজ্ঞাসা করেছি স্ট্যাকওভারফ্লো.com/ প্রশ্নস / 66২৪২60০ / আপনি কি একবার দেখে নিতে পারেন?
এভরেন ওজটর্ক

12

2 ডি প্রোগ্রামিং কেবল 3 ডি প্রোগ্রামিং যা বিমানে সীমাবদ্ধ। আপনার কাছে 3D শিখার বিকল্প নেই, তবে আপনি যখন এটি ব্যবহার করছেন তখন z = 0 সেট করুন।

ওপেনজিএল ইএস-তে একটি অফিশিয়াল বই রয়েছে। এটি আপনাকে পরবর্তী পরিচয় দিতে পারে যা আপনি পরে: http://www.amazon.com/OpenGL-ES-2-0- প্রোগ্রামিং- গুইড / ডিপি/0321502795 /


8
পেডেন্টিক হতে, আপনি এখনও জেড ব্যবহার করেন যাতে আপনি হার্ডওয়্যারটিকে আপনার জন্য বাছাই করতে দিতে পারেন। বড় পরিবর্তনটি হ'ল (সম্ভবত) 2 ডি অ্যাপ্লিকেশনটি একটি দৃষ্টিকোণের পরিবর্তে একটি অর্থোগ্রাফিক ভিউ ব্যবহার করবে।
ড্যাশ-টম-ব্যাং

আপনার উত্তরের জন্য আপনাকে অনেক ধন্যবাদ, আপনার বক্তব্য আমাকে দেখায় যে আমি ওপেনগেল এবং ওপেনগল ইএস সংজ্ঞাটি সম্পর্কে ভুল ছিল।
শীতল স্ট্রাউ

3

আমি অবশ্যই অ্যান্ড্রয়েড চেকআউট করব - ক্রিস প্রুয়েট গুগল আইও লেকচার অ্যান্ড্রয়েড রিডেক্সের জন্য রিয়েল-টাইম গেমগুলি রচনা করছে

পিডিএফও ধরুন

এটি অনেক স্তরে সত্যই সহায়ক, মোবাইল ডিভাইসগুলির জন্য গেম তৈরির সাথে ক্রিসের সত্যিই দুর্দান্ত অভিজ্ঞতা রয়েছে

কিন্তু আপনি যদি সত্যিই 2D উপর দৃষ্টি নিবদ্ধ করা হয় তারপর ক্যানভাস দিয়ে শুরু http://developer.android.com/guide/topics/graphics/index.html#drawing-with-canvas

আরেকটি বিকল্প হ'ল ফ্ল্যাশ + অ্যাডোবিএআইআর থেকে অ্যান্ড্রয়েডের স্তরের উপর নির্ভর করে, আমি নিজেই পছন্দ করি এবং ভালবাসার প্রোগ্রামিং স্তর এবং আপনি আরও বিকাশ শুরু করার সাথে সাথে কেন এটি খুঁজে পাবেন।

ওপেনজিএল: নেহ প্রোডাকশনের জন্য পরীক্ষা করুন

আপনি আপনার ফোনে যে অ্যাপ্লিকেশনগুলি রাখতে চান তা বেশ উপযুক্ত এবং সেগুলি বিনামূল্যে: ওপেনজিএল ডেমো, মিনি 3 ডি ফ্রেমওয়ার্ক, রেডবুক নমুনা


1

আপনি প্রকল্পটি দেখতে পারেন : https://github.com/ChillingVan/android-openGL-canvas/blob/master/README-en.md এই ওপেনগিএলের সাথে ক্যানভাস প্রয়োগ করে। এটি খাঁটি জাভা। এটি সাধারণ ক্যানভাস কি করতে পারে তার অংশগুলি প্রয়োগ করে।


0

আমি দেখতে পাচ্ছি ইতিমধ্যে অনেকগুলি ভাল তথ্য সরবরাহ করা হয়েছে। আমি এমন একটি সাইট ভাগ করতে চেয়েছিলাম যা ওপেনজিএলই দ্রুত গতিতে সহায়তা করেছিল! এটি কেবল কয়েক মাস সময় নিয়েছে এবং কার্টেসিয়ান স্থানাঙ্ক সিস্টেমের ভিত্তিতে একটি কাস্টম সমন্বয় ব্যবস্থা ছিল। আমি অগমেন্টেড রিয়েলিটি কৌশল ব্যবহার করে 3 ডি অবজেক্ট কোনও ক্যামেরা রেন্ডার করতে সক্ষম হয়েছি।

আমি কেবল প্রোগ্রামিং অভিজ্ঞতা দিয়ে শুরু করেছি, ওপেনজিএল অভিজ্ঞতা নেই। আমি রে ওেন্ডারলিচের টিউটোরিয়াল সাইট ব্যবহার করেছি। সেখানে প্রদত্ত তথ্যগুলি শীর্ষস্থানীয় এবং উপলব্ধি করা সহজ। তিনি বেশিরভাগ অপ্রয়োজনীয় তথ্য কাটেন এবং দ্রুত উত্পাদনশীল হওয়ার জন্য আপনার যা জানা দরকার তা সরবরাহ করে। আমি এই টিউটোরিয়ালটির প্রারম্ভিক পয়েন্ট হিসাবে অত্যন্ত সুপারিশ করছি: http://www.raywenderlich.com/5223/beginning-opengl-es-2-0-with-glkit-part-1

আমি যে অন্যান্য সংস্থানটির প্রস্তাব দিচ্ছি তা হ'ল আইওএসের জন্য ওপেনজিএল ইএস শেখার শিরোনাম এরিক এম বাকের একটি বই।

আইওএস বইয়ের কভার আর্টের জন্য ওপেনজিএল ইএস শেখা

কেউ কেউ এটি সমালোচনা করে বলেছিলেন যে এটি সমালোচনা করেছে। তবে ঠিক আমি যা খুঁজছিলাম। এটি আমাকে সমস্ত বুনিয়াদি বুঝতে সাহায্য করেছে এবং আরও উন্নত জিনিসগুলি শেখার জন্য আমাকে কোথায় যেতে হবে সে সম্পর্কে আমাকে একটি ধারণা দিয়েছে। তবে অবাক হওয়ার মতো বিষয় নয়, আমি রায়ের সাইট এবং এরিকের বই থেকে শিখেছি এমন সহজ কৌশলগুলি ব্যবহার করে আমার বর্ধিত বাস্তবতা অ্যাপটি তৈরি করতে সক্ষম হয়েছিল। ভাগ করে নেওয়ার জন্য তাদের উভয়কেই ধন্যবাদ !!!


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.