ওপেনজিএলে ফ্রেম বাফার অবজেক্টে যা রেন্ডার করা হচ্ছে তা কীভাবে আমি ডিবাগ করতে পারি?


17

আমার পয়েন্ট মেঘ রয়েছে যা স্ক্রিনে রেন্ডার হচ্ছে। প্রতিটি পয়েন্টের অবস্থান এবং রঙের পাশাপাশি একটি আইডি রয়েছে।

আমাকে টেক্সচারে প্রতিটি পয়েন্টের জন্য আইডি রেন্ডার করতে বলা হয়েছিল তাই আমি একটি এফবিও তৈরি করেছি এবং দুটি টেক্সচার সংযুক্ত করেছি, একটি রঙের জন্য এবং একটি গভীরতার জন্য। আমি এই অফ-স্ক্রিন রেন্ডারিংয়ের জন্য প্রয়োজনীয় ভিএও এবং ভিবিও তৈরি করেছি এবং প্রতিটি পয়েন্টের জন্য এর অবস্থান এবং আইডি আপলোড করেছি।

একবার এফবিওতে রেন্ডারিং হয়ে গেলে glReadPixels(), মানগুলি কী তা দেখার জন্য আমি রঙ-টেক্সচারের পিক্সেলগুলি পড়ি তবে সেগুলি সমস্ত সাফ হয়ে গেছে বলে মনে হচ্ছে, তাদের কাছে থাকা মানটি একই glClearColor()

এটি আমার এফবিওর রঙিন টেক্সচারে যা রেন্ডার হচ্ছে তা ডিবাগ করার কোনও উপায় আছে কি? আপনি যে কোনও টিপস সরবরাহ করতে পারেন সেগুলি অত্যন্ত স্বাগত।

উত্তর:


21

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

খুব ভাল একটি রেন্ডারডোক যা সম্পূর্ণ ফ্রি এবং ওপেনসোর্স উভয়ই। এছাড়াও এটি সক্রিয়ভাবে সমর্থিত।

আর একটি হ'ল ইন্টেল জিপিএ যা দুর্ভাগ্যক্রমে, তার ওয়েবপৃষ্ঠা অনুযায়ী ওজিএল ৩.৩ কোর পর্যন্ত সমর্থন করে।

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


অতিরিক্তভাবে আমার মাঝে মাঝে একটি কমান্ড থাকে যা একটি কী চাপলে আমি একটি নির্দিষ্ট এফবোকে একটি চিত্রে ফেলে দেব। এটি নিম্ন প্রযুক্তির উপায়।
জোর্হে রদ্রিগেজ

আপনার ভিজ্যুয়ালাইজেশন এফবিওতে রেন্ডারিংয়ের জন্য আপনার সঠিক গভীরতার পরীক্ষা সেটআপ আছে কিনা তা নিশ্চিত করে নেওয়াও সম্ভবত একটি ভাল ধারণা।
রাইস

আমি এখনও পুরানো জিএল সংস্করণগুলির জন্য সময়ে সময়ে জিডিডিবাগার ব্যবহার করি। কোডএক্সএল এর আরও আধুনিক সংস্করণ এবং এটি এখানে পাওয়া যাবে: github.com/GPUOpen-Tools/CodeXL নোট করুন যে এপিট্র্যাস পৃষ্ঠায় গ্রাফিক্স ডিবাগিং সরঞ্জামগুলির একটি বিস্তৃত তালিকা এখানে রয়েছে: apitrace.github.io/#links
বিম

11

উদাহরণস্বরূপ gbuffer ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিতে FBOs থেকে ডেটা পাওয়ার জন্য আমি বেশ কয়েকটি অ্যাপ্লিকেশন / এপিআই / লাইব্রেরি পরীক্ষা করেছি। কয়েক মাস কষ্টের পরে আমি ওপেনজিএল, ডাইরেক্ট 3 ডি এবং ওয়েবজিএল ডিবাগ করার জন্য গিথুব-এ অ্যাপিট্রিসের সন্ধান পেয়েছি । আমি কোনও সমস্যা ছাড়াই উইন্ডোজ এবং লিনাক্সে ব্যবহার করেছি।

আমি আশা করি এটি আপনার পক্ষে কার্যকর হতে পারে।


7

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

// XXX WARNING: Untested code follows

// Blit from fbo...
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
// ...to the front buffer.
glBindFramebuffer(GL_WRITE_FRAMEBUFFER, GL_FRONT);

GLsizei HalfWindowWidth = (GLsizei)(WindowWidth / 2.0f);
GLsizei HalfWindowHeight = (GLsizei)(WindowHeight / 2.0f);

// Blit attachment 0 to the lower-left quadrant of the window
glReadBuffer(GL_COLOR_ATTACHMENT0);
glBlitFramebuffer(0, 0, FboWidth, FboHeight,
                  0, 0, HalfWindowWidth, HalfWindowHeight,
                  GL_COLOR_BUFFER_BIT, GL_LINEAR);

// Blit attachment 1 to the lower-right quadrant of the window
glReadBuffer(GL_COLOR_ATTACHMENT1);
glBlitFramebuffer(0, 0, FboWidth, FboHeight,
                  HalfWindowWidth, 0, WindowWidth, HalfWindowHeight,
                  GL_COLOR_BUFFER_BIT, GL_LINEAR);

// ...and so on. You can switch FBOs if you have more than one to read from.

কয়েকটি সুস্পষ্ট "গ্যাটাচস" রয়েছে, এইচডিআর বাফারগুলি সম্ভবত আপনি যেভাবে প্রত্যাশা করেছেন সেভাবে কল্পনা করতে পারবেন না, আপনি সম্ভবত স্পষ্ট উপায়ে গভীরতা / স্টেনসিল বাফারগুলিকে "দেখতে" পারবেন না, এবং যদি এফবিওর আকারটি না পায় 'ব্লিটেড হওয়া অঞ্চলটির সাথে মেলে না, ম্যাগনিফিকেশন / মিনিফিকেশন পদ্ধতি অত্যন্ত নিখুঁত হতে পারে।

তবে যত তাড়াতাড়ি 'নোংরা হ্যাকগুলি চলেছে, এটি বেশ ভাল।

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