ডায়রেক্ট 3 ডি 10 বা তার পরে ত্রিভুজ অনুরাগীরা কেন সমর্থিত নয়?


16

ডকুমেন্টেশনে আচ্ছাদিত হিসাবে, ত্রিভুজ অনুরাগীরা Direct3D 10 বা তারপরে সমর্থন করে না

কেন? ত্রিভুজ ভক্তদের সাথে কাজ করার অন্তর্নিহিত কমতি রয়েছে কি?


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

3
ভক্তদের সূচকগুলি ব্যবহার করে সংযুক্ত করা যেতে পারে তাই আলাদা কোনও কলের প্রয়োজন নেই। এটি স্ট্রিপগুলির ক্ষেত্রেও প্রযোজ্য (এবং আপনি ফ্যানগুলি ফ্যানগুলির সাথে সংযুক্তও করতে পারেন) যা অনেক বেশি নমনীয়, ডিজেনরেট ট্রিসের প্রয়োজন হয় না, এবং ব্যান্ডউইথের দিক থেকে আরও লাইটওয়েট।
ম্যাক্সিমাস মিনিমাস

উত্তর:


15

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

যদি সমস্ত হার্ডওয়্যার বিক্রেতারা "এইভাবে এটি করুন এবং আপনি দ্রুত হতে চলেছেন" বলছেন তবে খুব সুন্দর সম্ভাবনা আছে যে আপনি যদি এভাবে করেন তবে আপনি আরও দ্রুত হবে।

সুতরাং D3D10 + কেবল এটির আনুষ্ঠানিকতা দেয়; যদি এটিই দ্রুতগতি হয় তবে আপনি যে পথটি ব্যবহার করতে চলেছেন সেটি অন্য পথের অস্তিত্ব নেই। এটি ডি 3 ডি 10 + এর একটি ডিজাইনের দর্শনের সাথে সঙ্গতি রেখে চলেছে, যা আপনাকে দ্রুত পথে নিয়ে যায় এবং আপনাকে সেখানে রাখে।


4

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

উভয় ক্ষেত্রেই, আপনার বেশিরভাগ প্রয়োজনের জন্য ত্রিভুজ অনুরাগীদের প্রতিস্থাপন করা সম্ভব (উত্তল বহুভুজ রেন্ডারিংয়ের মতো) প্রায়শই আরও ভাল ফলাফলের সাথে ps

// A simplified API interface is presented for the purposes of having readable pseudocode
// Push( pos ) - pushes position data to make a new vertex
// TRIANGLE FANS:
for( i = 0; i < vertices.count; ++i )
    Push( vertices[ i ] );

// TRIANGLE STRIPS:
for( i = 0; i < vertices.count; ++i )
{
    if( i % 2 == 0 )
        vertex = i / 2;
    else
        vertex = vertices.count - 1 - i / 2;
    Push( vertices[ vertex ] );
}

সম্পাদনা: উল্লেখ করতে ভুলে গেছেন - আপনার যদি উইন্ডিংয়ের ক্রম পরিবর্তন করতে হয় - কেবল "যদি" (== থেকে! =) তে পরীক্ষাটি বিপরীত করুন।


3

(এই বিশেষ প্রশ্নটি একটি মতামত উত্তরের ওয়ারেন্ট দেয় :)

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

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

ওয়েবজিএল রান-টাইম এবং এ জাতীয় সার্টিফিকেট বাফার এবং সর্বদা ট্র্যাক রাখতে হয় এবং ড্রাইভাররা সহজেই লোকেরা এটি সমর্থন না করেও তাদের ভক্ত প্রেরণ করতে পারে।

সুতরাং এফএফপি থেকে পুরো ছোঁড়া এবং এটি কেবল একটি বড় বিরক্তি আইএমও।


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

1
@ mh01 কোন হার্ডওয়্যার ফ্যানকে স্থানীয়ভাবে সমর্থন করে না? এইচ ডব্লিউ সব পরে পূর্ণ যেমন OpenGL সঙ্গে কাজ করার আছে ...
উইল

ভার্টেক্স তথ্যটি জিপিইউ মেমরিতে সঞ্চিত থাকতে পারে তবে এটি সিস্টেমের মেমোরি থেকে কোনওভাবে প্রথমে (কমপক্ষে একবারে) ফিরে আসতে হবে। এটা ড্রাইভারের মাধ্যমে। (ধরে নিলে ডেটা উত্পন্ন সিপিইউ দিকের, যা বিশেষত হার্ডওয়্যার ডেমো বাদে প্রায়শই হয়)।
BrainSlugs83
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.