ওপেনজিএল - কিউবগুলিতে সাদা প্রান্তগুলি


12

আমি তৈরি করা একটি মাইনক্রাফ্টের মতো খেলায় আমি আমার কিউবগুলিতে সাদা প্রান্তগুলি পাই:

এখানে চিত্র বর্ণনা লিখুন

গা dark় জমিনে এটি আরও বেশি লক্ষণীয়। টেক্সচারগুলি এভাবে সেটআপ করা হচ্ছে: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

কোন সাহায্য?


3
আপনি প্রতিটি কিউব কীভাবে রেন্ডার করেন এবং কিউবগুলি কীভাবে রাখেন সে সম্পর্কে আপনি কিছু কোড প্রদর্শন করতে পারেন?
joncodo

1
টেক্সচার মোড়ানো কি আলাদা কিছু করে? টেক্সচারটি / আকারের মতো দেখাচ্ছে যা আপনি আবদ্ধ?
চক ডি

আমি কেবল এটি উল্লেখ করতে চেয়েছিলাম যে আমি এটি বড় টেক্সচার অ্যাটলাসেও ছোট ছোট টাইল ব্যবহার করে দেখেছি। উদাহরণস্বরূপ, বলুন যে আপনার কাছে একটি 1024 * 1024 টাইলসেট / অ্যাটলাস রয়েছে এবং আপনি 32 * 32 এর টাইলস ব্যবহার করছেন। আপনি রাউন্ডিং ত্রুটিগুলি পান কারণ দশমিক পয়েন্ট যে টাইলকে মানচিত্রে একটি খুব ছোট দ্বিগুণ double এটি নির্ভুলতা অসম্ভবকে নিকটে পরিণত করে। একটি সমাধান? টাইল অ্যাটলাস পৃথক টাইলস মধ্যে ভাঙ্গা। এটি মাইনক্রাফ্ট যা করে, বা করত। তাদের একটি বড় টাইলসেট ছিল এবং রানটাইমের সময় তারা এটিকে পৃথক টেক্সচারে কাটা।
ক্রিথিক

উত্তর:


19

এই ধরণের সমস্যার জন্য দুটি সম্ভাব্য কারণ রয়েছে, ঠিক কোন সমস্যাটি তা নির্ভর করে। আমি উভয় তালিকা করব:

1. আপনি টাইলসের প্রান্ত বরাবর আপনার টেক্সচার থেকে অন্যান্য রঙ দেখছেন।

এই ক্ষেত্রে সমস্যার মতো এটি আমার কাছে দেখায়, কারণ প্রান্ত পিক্সেলগুলির তিনটিই আপনার জমিনে প্রশংসনীয়ভাবে হ'ল তিনটি রঙের একটি: সাদা, কালো এবং বাদামী।

আপনি যদি একক টেক্সচার (টেক্সচার অ্যাটলাস) এর একে অপরের পাশে একাধিক টাইল চিত্র ব্যবহার করেন, তবে আমি অনুমান করি যে আপনি এটি করছেন, এটি অনিবার্য। এটি ঘটে কারণ জিপিইউ জমিনের সাথে ইন্টারপোলেশন সহ ত্রিভুজটির প্রান্তের সাথে আন্তঃবিভাজন পুরোপুরি মেলে না এবং আপনি সংলগ্ন জমিনের সামান্য বিট পান।

আপনি করতে পারেন এমন অনেকগুলি জিনিস রয়েছে।

  • টেক্সচার অ্যাটলাসের পরিবর্তে একটি অ্যারে টেক্সচার ব্যবহার করুন । একটি অ্যারের টেক্সচার একই আকারের 2D চিত্রের স্ট্যাক দিয়ে তৈরি হয় এবং আপনি একটি নির্বাচন করতে তৃতীয় স্থানাঙ্ক নির্দিষ্ট করেন; এটি ফিল্টারিং সমস্যা ছাড়াই টেক্সচার অ্যাটলাসের প্রতিস্থাপন হিসাবে ঠিক উদ্দেশ্য। তবে অ্যারে টেক্সচারগুলি নতুন বৈশিষ্ট্য যা আপনি ব্যবহার করছেন ওপেনএল সংস্করণে উপলব্ধ নাও হতে পারে।
  • আপনার প্রতিটি টেক্সচার টাইলগুলিতে 1 পিক্সেল সীমানা তৈরি করুন, যা সংলগ্ন নিয়মিত পিক্সেলের রঙের প্রতিরূপ তৈরি করে। (এটি মূলত জিএল এর পুনরায় সংশোধনকারী CLAMP[_TO_EDGE], তবে এমনভাবে যা টেক্সচার অ্যাটলাস সম্পর্কে সচেতন - আপনার ব্যবহারের কোনও প্রভাব নেই কারণ আপনার টাইলের বেশিরভাগ অংশ টেক্সচারের প্রান্তে নয়)) এটি আমার নিজের প্রবেশের ক্ষেত্রে সমাধানটিই এটি সমাধান ঘরানার মধ্যে, কিউবস । এটিতে বেশি টেক্সচার মেমরি ব্যবহার করা ছাড়া আমি কোনও বিশেষ অসুবিধাগুলি সম্পর্কে জানি।
  • আপনার টেক্সচার সমন্বয়গুলি খুব সামান্য ইনসেট করুন, যাতে তারা টেক্সচার টাইলের প্রান্তে না যায় all খুব বেশি করে এটি করার ফলে মাঝখানে পিক্সেলের তুলনায় টেক্সচারের প্রান্তগুলি লক্ষণীয় পাতলা হয়ে যাবে।
  • প্রতি টাইল টাইপ একক টেক্সচার ব্যবহার করুন। এটি টেক্সচার-স্যুইচিংয়ের ব্যয় আরোপ করে।

২. আপনি টাইলসের মধ্যে ফাঁক দিয়ে দেখছেন।

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

এটি ঘটতে পারে যখন আপনি সংলগ্ন টাইলসের মিটিং প্রান্তের শীর্ষেগুলির জন্য ঠিক একই স্থানাঙ্ক সরবরাহ না করে যা সাধারণত ভাসমান-পয়েন্ট ত্রুটির কারণে দেখা দেয়। উদাহরণস্বরূপ, যদি আপনি আকার 0.6 এর টাইলস আছে যদি এবং টালি ডান প্রান্ত গনা x=100সঙ্গে (100*0.6) + 0.6, এবং টালি বাম প্রান্ত x=101দিয়ে (100*0.6), আপনি সঠিক একই উত্তর না পাবেন, এবং পার্থক্য সামান্য স্টুডিও যেমন দৃশ্যমান হতে পারে ফাঁক।

সমাধানটি হ'ল আপনার পাটিগণিত সুসংগত কিনা তা নিশ্চিত করা; এটি করার কিছু উপায় হ'ল:

  • নিশ্চিত করুন যে আপনি না (এমনকি পরোক্ষভাবে) কম্পিউটিং হয় তা নিশ্চিত করুন index*size + size, কিন্তু শুধুমাত্র (index+1)*size
  • আপনার গণিতটি সঠিক কিনা তা নিশ্চিত করুন; এটি করার সবচেয়ে সহজ উপায় হ'ল আপনার টাইলের আকার হুবহু 1.0 করা, যার ফলে আপনি 32-বিট ভাসমান (যাইহোক, উত্স থেকে 16 মিলিয়ন ব্লক) দিয়ে গণনা করা হলেও সঠিক সংখ্যার পাটিগণিতের ফলাফল হবে।
  • ভার্টেক্স সমন্বয় গণনার জন্য প্রকৃত পূর্ণসংখ্যা ব্যবহার করুন; এটি আপনাকে আরও বেশি পরিসীমা দেয়।

আমার কাছে ফাঁকের মতো মনে হচ্ছে - ক্ষুদ্র এবং তীক্ষ্ণ বিট বিবেচনা করে কোনও টেক্সচার রক্তপাত হচ্ছে না (যদি না এটি বেশ কিছু উচ্চ রসের টেক্সচার হয়)।
মারিও

ধন্যবাদ, জমিনের সমন্বয়কে কিছুটা সংযোজন করা ঠিক হয়েছে বলে মনে হচ্ছে।
লুইস ক্রুজ

@ মারিও আমি ধরে নিলাম এটি নিকটতম ম্যাগনিফিকেশন সহ - টাইলের অভ্যন্তরের তীক্ষ্ণ সীমানা নোট করুন। সুতরাং যে দৃষ্টিকোণ জন্য, এটি একটি অসীম রেজোলিউশন টেক্সচার।
কেভিন রেড

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