ওপেনজিএল, আধুনিক উপায়ে প্রচুর টাইল আঁকুন


35

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

আমার প্রতি ফ্রেমে 250-750 48x48 টাইলগুলির পাশাপাশি প্রায় 50 টি স্প্রাইটের আঁকতে হবে es টাইলগুলি কেবল তখনই পরিবর্তিত হয় যখন কোনও নতুন স্তর লোড হয় এবং স্প্রিটগুলি সর্বদা পরিবর্তন হয়। কিছু টাইলস চারটি 24x24 টুকরা দিয়ে তৈরি, এবং বেশিরভাগ স্প্রিট (তবে সমস্ত নয়) টাইলগুলির সমান আকার। অনেকগুলি টাইলস এবং স্প্রাইট আলফা মিশ্রণ ব্যবহার করে।

এই মুহূর্তে আমি তাৎক্ষণিক মোডে এগুলি করছি, যা আমি জানি একটি খারাপ ধারণা। সব মিলিয়ে, যখন আমাদের দলের সদস্যরা এটি চালানোর চেষ্টা করেন, তখন তিনি খুব খারাপ ফ্রেমের রেট পান (~ 20-30 fps), এবং যখন আরও টাইল থাকে খুব বেশি খারাপ হয়, বিশেষত যখন এই টাইলগুলির মধ্যে অনেকগুলি এমন হয় টুকরো টুকরো করা হয় এগুলি আমাকে ভাবতে বাধ্য করে যে সমস্যাটি হচ্ছে কল করা কলগুলির সংখ্যা।

আমি এর কয়েকটি সম্ভাব্য সমাধানের কথা ভেবেছি, তবে আমি তাদের কিছু লোক দ্বারা চালিত করতে চেয়েছিলাম যারা জানে যে তারা কী সম্পর্কে কথা বলছে তাই আমি বোকা কিছুতে আমার সময় নষ্ট করি না:

টাইল:

  1. কোনও স্তর লোড হয়ে গেলে, সমস্ত টাইলগুলি একবার একটি বড় হানিং টেক্সচারের সাথে সংযুক্ত ফ্রেম বাফারে আঁকুন এবং কেবল প্রতিটি ফ্রেমে সেই টেক্সচার সহ একটি বড় আয়তক্ষেত্র আঁকুন।
  2. স্তরটি লোড হয়ে যাওয়ার সাথে সমস্ত টাইলসকে একটি স্ট্যাটিক ভার্টেক্স বাফারে রাখুন এবং সেগুলি সেভাবে আঁকুন। আমি জানি না যে glDrawE উপাদানগুলিতে একক কল সহ বিভিন্ন টেক্সচারের সাথে অবজেক্টগুলি আঁকার কোনও উপায় আছে বা যদি এটি এমন কিছু হয় যা আমি করতে চাই। সম্ভবত সমস্ত টাইলস কেবল একটি বৃহত দৈত্য টেক্সচারে রাখুন এবং ভিবিওতে মজাদার টেক্সচারের স্থানাঙ্ক ব্যবহার করবেন?

sprites:

  1. GlDrawE উপাদানগুলিতে পৃথক কল সহ প্রতিটি স্প্রিট আঁকুন। এটি অনেকগুলি টেক্সচার স্যুইচিংয়ের সাথে জড়িত বলে মনে হচ্ছে, যা আমাকে বলা খারাপ। টেক্সচার অ্যারেগুলি কি এখানে দরকারী হতে পারে?
  2. কোনওভাবে গতিশীল ভিবিও ব্যবহার করুন। উপরের সংখ্যা 2 হিসাবে একই টেক্সচার প্রশ্ন।
  3. পয়েন্ট স্প্রেটস? এটি সম্ভবত নির্বোধ।

এই ধারনাগুলির মধ্যে কি কোনও বোধগম্য? কোথাও আমি কি ভাল নজরদারি করতে পারি?


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

টেক্সচার অ্যাটলাস ব্যবহার করে চেষ্টা করুন যাতে আপনার টেক্সচারগুলি স্যুইচ করতে হবে না, তবে সমস্ত কিছু একই রাখবেন। এখন তাদের ফ্রেমরেট কেমন?
ব্যবহারকারী 253751

উত্তর:


25

টাইলস রেন্ডার করার দ্রুততম উপায়টি সূচকগুলি সহ একটি ভার্চুয়াল ডেটা একটি স্ট্যাটিক ভিবিওতে প্যাক করছে (যেমন glDrawE উপাদান নির্দেশ করে)। এটি অন্য ছবিতে লেখা সম্পূর্ণ অপ্রয়োজনীয় এবং কেবল আরও অনেক বেশি মেমরির প্রয়োজন হবে। টেক্সচার স্যুইচিং খুব ব্যয়বহুল, সুতরাং আপনি সম্ভবত সমস্ত টাইলস একটি তথাকথিত টেক্সচার অ্যাটলাসে প্যাক করতে এবং ভিবিওতে প্রতিটি ত্রিভুজটি সঠিক টেক্সচারের স্থানাঙ্ক দিতে চান। এর ভিত্তিতে, আপনার হার্ডওয়ারের উপর নির্ভর করে 1000, এমনকি 100000 টাইলস রেন্ডার করতে সমস্যা হওয়া উচিত নয়।

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

আপনি ওপেনজিএল: পারটিকুলেট দিয়ে সি ++ তে তৈরি একটি ছোট প্রোটোটাইপটি দেখতে পারেন

আমি অনুমান করি যে আমার প্রায় 10000 পয়েন্ট স্প্রাইটস রেন্ডার হয়, একটি সাধারণ মেশিনে গড়ে 400 টি পিপিএস (কোয়াড কোর @ 2.66GHz)। এটি সিপিইউ ক্যাপড, এর অর্থ গ্রাফিক্স কার্ড আরও বেশি রেন্ডার করতে পারে। নোট করুন যে আমি এখানে টেক্সচার অ্যাটলেস ব্যবহার করি না, যেহেতু আমার কাছে কণাগুলির জন্য কেবল একটিই টেক্সচার রয়েছে। কণাগুলি GL_POINTS এর সাথে রেন্ডার করা হয় এবং শেডাররা তখন প্রকৃত কোয়াড আকারটি গণনা করে তবে আমার মনে হয় এখানে কোয়াড রেন্ডারারও রয়েছে।

ওহ, এবং হ্যাঁ, আপনার যদি বর্গক্ষেত্র না থাকে এবং টেক্সচার ম্যাপিংয়ের জন্য শেডার ব্যবহার না করা হয় তবে GL_POINTS বেশ নির্বোধ। ;)


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

2
মূল স্ট্রিম অঙ্কনের অর্থ: "গ্রাফিক্স কার্ডে এই ডেটাটি প্রেরণ করুন এবং অঙ্কনের পরে এটিকে বাতিল করুন"। সুতরাং আপনাকে প্রতিটি ফ্রেমটিতে আবার ডেটা প্রেরণ করতে হবে এবং এর অর্থ আপনি কত স্প্রেট রেন্ডার করেন না, তাদের অবস্থান কী রয়েছে, কোন টেক্সচার সমন্বয় হয় বা কোন রঙ matter তবে একবারে সমস্ত ডেটা প্রেরণ এবং জিপিইউ প্রক্রিয়াটি করা যাক এটি অবশ্যই তাত্ক্ষণিক মোডের চেয়ে খুব দ্রুত।
মার্কো

এই সব বোঝার। এর জন্য একটি ইনডেক্স বাফার জিনিসটি ব্যবহার করা কি উপযুক্ত? একমাত্র উল্লম্বটি যা পুনরাবৃত্তি হবে তা প্রতিটি আয়তক্ষেত্রের দুটি কোণার, তাই না? (আমার বোধগম্যতা হ'ল সূচকগুলি হ'ল glDrawE উপাদান এবং glDrawArrays এর মধ্যে পার্থক্য that এটি কি ঠিক?)
নিক

1
সূচকগুলি ছাড়া আপনি GL_TRIANGLES ব্যবহার করতে পারবেন না, যা সাধারণত খারাপ হয়, যেহেতু এই অঙ্কন পদ্ধতিটি গ্যারান্টিযুক্ত সেরা পারফরম্যান্স সহ এক। (: উৎস এছাড়াও, GL_QUADS বাস্তবায়ন যেমন OpenGL 3.0 অবচিত stackoverflow.com/questions/6644099/... )। ত্রিভুজগুলি কোনও গ্রাফিক্স কার্ডের দেশীয় জাল। সুতরাং, আপনি 2 ভার্টেক্স শেডার মৃত্যুদন্ড কার্যকর করতে এবং ভার্টেক্স_সাইজ * 2 বাইট সংরক্ষণ করতে 2 * 6 বাইট আরও "ব্যবহার" করেন। সুতরাং, আপনি সাধারণত বলতে পারেন যে এটি সর্বদা ভাল।
মার্কো

2
পার্টিকুলেটটির লিঙ্কটি মারা গেছে ... আপনি কি দয়া করে একটি নতুন সরবরাহ করতে পারেন?
এসডাব্লুডিভি

4

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

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


আমি কিছু প্রোফাইলিং করেছি, যদিও এটি বিশ্রী কারণ কর্মক্ষমতা সমস্যাগুলি একই মেশিনে বিকাশের মতো ঘটছে না happening আমি একটু সংশয়বাদী যে সমস্যাটি অন্য কোথাও রয়েছে কারণ সমস্যাগুলি অবশ্যই টাইলসের সংখ্যার সাথে বৃদ্ধি পায় এবং টাইলগুলি আক্ষরিকভাবে আঁকানো ছাড়া কিছুই করে না।
নিক

তাহলে রাষ্ট্রের পরিবর্তন কীভাবে হবে? আপনি কি রাষ্ট্রের দ্বারা আপনার অস্বচ্ছ টাইলসকে গ্রুপ করছেন?
ম্যাক্সিমাস মিনিমাস

এটাই সম্ভাবনা। এটি অবশ্যই আমার পক্ষে আরও মনোযোগ দেওয়ার দাবি রাখে।
নিক

2

ঠিক আছে, যেহেতু আমার শেষ উত্তরটি হাতছাড়া হয়ে গেছে এটি একটি নতুন যা সম্ভবত আরও দরকারী।


প্রায় 2 ডি-পারফরম্যান্স

প্রথমে কিছু সাধারণ পরামর্শ: 2 ডি বর্তমান হার্ডওয়্যারটির জন্য দাবি করছে না, এমনকি বৃহত্তর অব্যবহিত কোডও কাজ করবে। এর অর্থ এই নয় যে আপনার অন্তর্বর্তী মোড হওয়া উচিত, কমপক্ষে নিশ্চিত হয়ে নিন যে আপনি যখন অপ্রয়োজনীয় তখন রাজ্যগুলি পরিবর্তন করবেন না (উদাহরণস্বরূপ, যদি একই টেক্সচারটি ইতিমধ্যে আবদ্ধ থাকে তখন গ্লবাইন্ড টেক্সচারের সাথে একটি নতুন টেক্সচারকে আবদ্ধ করবেন না, যদি সিপিইউতে পরীক্ষা করা হয় তবে টন হয়) একটি গ্লোবাইন্ডটেকচার-কলের চেয়ে দ্রুত) এবং গ্লোভেরটেক্স হিসাবে সম্পূর্ণ ভুল এবং বোকা কিছু ব্যবহার না করা (এমনকি glDrawArrays আরও দ্রুত হবে, এবং এটি ব্যবহার করা আর কোনও কঠিন নয়, যদিও এটি খুব "আধুনিক" নয়)। এই দুটি খুব সাধারণ নিয়মের সাথে ফ্রেমের সময় কমপক্ষে 10 মিমি (100 fps) হওয়া উচিত। এখন আরও বেশি গতি অর্জনের জন্য পরবর্তী যৌক্তিক পদক্ষেপটি হচ্ছে ব্যাচিং, উদাহরণস্বরূপ, অনেকগুলি কল কল করে একটি বান্ডিল করা, এর জন্য আপনার টেক্সচার অ্যাটলেসগুলি প্রয়োগ করা বিবেচনা করা উচিত, যাতে আপনি টেক্সচার বাইন্ডগুলির পরিমাণ হ্রাস করতে পারেন এবং এইভাবে আপনি একটি কল দিয়ে বড় পরিমাণে আঁকতে পারেন এমন আয়তক্ষেত্রের পরিমাণ বাড়িয়ে তুলতে পারেন। আপনি যদি এখন প্রায় 2 মিমি (500fps) এ না নামেন তবে আপনি কিছু ভুল করছেন :)


টাইল মানচিত্র

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

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


sprites

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


1
এমনকি আপনার যদি দশ হাজার স্প্রাইট থাকে তবে আধুনিক হার্ডওয়্যারটি এটি একটি শালীন গতিতে চালানো উচিত :)
মার্কো

@ এপিআই-বিস্ট কি অপেক্ষা করবেন? টেক্সচার্ট ইউভি এর খণ্ড শেডারটিতে আপনি কীভাবে গণনা করবেন? আপনি কি ইউভি গুলি টুকরা শ্যাডারে প্রেরণ করবেন?
এইচজিমার্ক

0

অন্য সব ব্যর্থ হলে...

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

সম্ভাবনাগুলি হ'ল, আপনি ক্রমাগত পুরো স্ক্রিনটি বার বার আঁকেন। কেবল পরিবর্তিত অঞ্চলগুলিকে কেবল পুনরায় আঁকানোর পরিবর্তে। এটি প্রচুর ওভারহেড। ধারণাটি সহজ, তবুও বুঝতে সহজ নয়।

কুমারী স্থির পটভূমির জন্য একটি বাফার ব্যবহার করুন। স্ক্রিনে কোনও স্প্রিট না থাকলে এটি কখনও নিজেকে রেন্ডার করা হয় না। এটি পরের কলগুলিতে স্প্রাইটটি আঁকানোর জন্য, যেখানে একটি স্প্রাইট আঁকানো হয়েছিল সেখানে "প্রত্যাবর্তন" করতে নিয়মিত ব্যবহৃত হয়। আপনার "আঁকতে" বাফারও দরকার যা পর্দা নয়। আপনি সেখানে আঁকুন, তারপরে, একবার সমস্ত আঁকলে, আপনি এটি একবারে স্ক্রিনে ফ্লিপ করুন। আপনার সমস্ত স্প্রিটের জন্য এটি একটি স্ক্রিন-কল হওয়া উচিত। (স্ক্রিনে প্রতিটি স্প্রিট আঁকার বিপরীতে, একবারে একবারে এটি করার চেষ্টা করা বা এটি একবারে করার চেষ্টা করা যা আপনার আলফা মিশ্রণকে ব্যর্থ করে দেবে memory) মেমরিটিতে লেখা দ্রুত হয়, এবং "আঁকার জন্য স্ক্রিন-সময় প্রয়োজন হয় না screen "। প্রতিটি ড্র-কল আবার আঁকার চেষ্টা করার আগে, কোনও রিটার্ন সিগন্যালের জন্য অপেক্ষা করবে। (কোনও ভি-সিঙ্ক নয়, একটি আসল হার্ডওয়্যার টিক, যা র‌্যামের অপেক্ষা অপেক্ষা সময়ের চেয়ে অনেক ধীর)

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

Lastly, I would suggest to limit what you are alpha-blending, to only things which need it. If everything needs it... You have no choice but to demand your users have better hardware requirements, or to degrade the game for the desired performance.


-1

Create a sprite sheet for objects and a tile set for terrain like you would in other 2D game, there's no need to switch textures.

Rendering tiles can be a pain because each triangle pair needs their own texture coordinates. There's a solution to this problem however, it's called instanced rendering.

As long as you can sort your data in a way so that, for example, you can have a list of grass tiles and their positions, you can render every grass tile with a single draw call, all you have to do is provide an array of model to world matrices for each tile. Sorting your data this way shouldn't be an issue with even the simplest scene graph.


-1: Instancing is a worse idea than Mr. Beast's pure-shader solution. Instancing works best for performance when rendering objects of moderate complexity (~100 triangles or so). Each triangle tile needing texture coordinates isn't a problem. You just create a mesh with a bunch of loose quads that happen to form a tilemap.
Nicol Bolas

1
@NicolBolas alright, i'm gonna leave the answer for the sake of learning
dreta

1
For clarity, Nicol Bolas, what is your suggestion for how to deal with all this? Marco's stream draw thing? Is there somewhere I can see an implementation of this?
Nic

@Nic: Streaming to buffer objects is not particularly complex code. But really, if you're only talking about 50 spites, that's nothing. Odds are good that it's your terrain drawing that was causing the performance issue, so switching to static buffers for that would probably be good enough.
Nicol Bolas

Actually, if instancing worked as we might think it should, it would be the best solution - but since it doesn't, baking all the instances into a single static vbo is the way to go.
Jari Komppa
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.