প্রান্তে স্কাইবক্স জমিন নিদর্শন


12

ম্যাকের স্কাইবক্স টেক্সচারটি আঁকতে আমার অদ্ভুত সমস্যা রয়েছে। আইফোনে সবকিছু ঠিকঠাক চলছে। আমি কোনও সাফল্য ছাড়াই কাছাকাছি এবং দূরবর্তী বিমানের মান পরিবর্তন করার চেষ্টা করেছি।

এটি ছয় টেক্সচারের একটি স্কাইবক্স এবং প্রতিটি টেক্সচারের জন্য আমি এটি সেট করেছি:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

কি সমস্যা হতে পারে?

স্ক্রীনশট:

স্কাইবক্সের প্রান্তগুলি সহ আকাশের চিত্র দৃশ্যমান

সম্পাদনা করুন:

আমি টেক্সচারের মাধ্যমে রক্তপাত হচ্ছে কিনা তা নিশ্চিত করার জন্য, ব্যাকগ্রাউন্ডের রঙকে লাল রঙে সেট করার চেষ্টা করেছি

আমি এটিতে টেক্সচারের সমন্বয়গুলিও পরিবর্তন করার চেষ্টা করেছি:

float err_corr = 0.5 / TEXTURE_SIZE;

GLfloat vertices[24] = {    
        -1.0f - err_corr, -1.0f - err_corr,  1.0f + err_corr,
    1.0f + err_corr, -1.0f - err_corr,  1.0f + err_corr,
    -1.0f - err_corr,  1.0f + err_corr,  1.0f + err_corr,
    1.0f + err_corr,  1.0f + err_corr,  1.0f + err_corr,
    -1.0f - err_corr, -1.0f - err_corr, -1.0f - err_corr,
    1.0f + err_corr, -1.0f - err_corr, -1.0f - err_corr,
    -1.0f - err_corr,  1.0f + err_corr, -1.0f - err_corr,
    1.0f + err_corr,  1.0f + err_corr, -1.0f - err_corr,
    };

এবং বাক্সটি এই ক্রমে আঁকা:
GLubyte indices[14] = {0, 1, 2, 3, 7, 1, 5, 4, 7, 6, 2, 4, 0, 1};

সমাধান:

সমাধানটি নিজেই কিউব্যাপের জন্য GL_CLAMP_TO_EDGE সেট করা যায়!

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

উত্তর:


8

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

উদাহরণ স্বরূপ:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glBindTexture(GL_TEXTURE_2D, tex1);
//upload texture, etc.

glBindTexture(GL_TEXTURE_2D, tex2);
//upload texture, etc.

এটি এর মতো নয়:

glBindTexture(GL_TEXTURE_2D, tex1);
//upload texture, etc.
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glBindTexture(GL_TEXTURE_2D, tex2);
//upload texture, etc.
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

আমি ত্রুটি খুঁজে পেয়েছি! কিউব মানচিত্রের প্রতিটি টেক্সচারের জন্য নয়, নিজেই কিউব্যাপের জন্য GL_CLAMP_TO_EDGE সেট করা প্রয়োজন ছিল ! glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);এবংglTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
মার্টিন পাইচ

1

জমিনের বাম এবং ডান দিক থেকে '0.5f / টেক্সচার_উইথ' এবং উপরের এবং নীচে থেকে '0.5f / টেক্সচার_হাইট' ইনসেট করুন। আপনি নমুনা নিদর্শনগুলি দেখছেন - টেক্সচার স্যাম্পলারগুলি সাধারণত টেক্সেলগুলির কেন্দ্র থেকে বাম এবং ডানদিকে, উপরের এবং নীচে (0 এবং 1 ইউভিতে) নমুনা পাওয়া যায় আপনি যখন স্যাম্পলারটি সীমা ছাড়িয়ে যান তখন যে পরিমাণ টেক্সেল পায় তার 50% পাচ্ছেন । এটি হয় জমিনের অন্য দিক বা কোনও ডিফল্ট নমুনা রঙ color


সে কারণেই সে GL_CLAMP_TO_EDGEসেটটি পেয়েছে , এটি সীমার বাইরে থাকা নমুনাগুলিকে নিকটতম ইন-টেক্সচার পিক্সেলের মান গ্রহণ করা উচিত। আপনি যা বর্ণনা করেছেন তা খুব ভাল কাজ করতে পারে তবে সমস্যাটি কেন প্রথম স্থানে রয়েছে তা ব্যাখ্যা করে না।
এআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআ।

আমি কোনও পরিবর্তন ছাড়াই এটি চেষ্টা করেছি: /
মার্টিন পাইচ

0

আমার সেরা অনুমান যে ম্যাক এবং আইফোনের মধ্যে পার্থক্যটি ম্যাকের অ্যান্টিএলজিংয়ের কারণে ঘটে। আমার 3 ডি প্রোগ্রামিংটি কিছুটা মরিচা, তবে আমি অনুমান করি যে আপনাকে সমস্ত স্কোয়ারকে একই জাল বা তার মতো কোনও কিছুতে তৈরি করতে হবে।

নোংরা হ্যাক সমাধানটি হ'ল সমস্ত স্কোয়ারকে কিছুটা বড় করতে হবে যাতে তারা একে অপরকে ওভারল্যাপ করে এবং একে অপরকে ক্লিপ করে এবং সেই অনুযায়ী ইউভি স্থানাঙ্কগুলি সামঞ্জস্য করে।


আমি কোনও প্রভাব ছাড়াই অ্যান্টি-এলিয়জিং বন্ধ করে দেওয়ার চেষ্টা করেছি (glDisable (GL_POLYGON_SMOOTH দ্বারা;)); আমি স্কোরবক্স আঁকছি ত্রিভুজ স্ট্রিপ হিসাবে কর্ডগুলি ফর্ম -1 থেকে 1
মার্টিন পাইচ

1
যে আমার ভাল শোনাচ্ছে। কমপক্ষে আপাতত আমি অনুমানের বাইরে আছি, তবে আপনি যদি সেই কালোটি পটভূমি থেকে রক্তক্ষরণ করছেন বা টেক্সচারের প্রান্তটি কালো হিসাবে দেখানো হচ্ছে তা খুঁজে বের করে সমস্যাটি সঙ্কুচিত করতে পারেন। আপনি যদি আর্টেফ্যাক্টের পিছনে কোনও লাল বহুভুজ রাখেন, প্রত্নক্ষেত্রটি কি রঙটি নেবে?
আআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআ।

আমি প্রাচীর প্রসারিত করার চেষ্টা করতে চাই, তাই তারা ওভারল্যাপ করে (ঠিক যেমন ইবসনেস লিখেছিল) - আমার মনে হয় 0.0001 যথেষ্ট হবে। আপনাকে ইউভি স্থানাঙ্কগুলি পরিবর্তন করতে হবে না।
জাকারমার্জ

1/10000 অবশ্যই যথেষ্ট নয়, সমস্যার তীব্রতা 1/4 থেকে 1/2 পিক্সেল সীমার মধ্যে বলে মনে হচ্ছে, তাই টেক্সচারের আকারের উপর নির্ভর করে এটি কাজ করার জন্য ন্যূনতম মাত্রা 1/1000 এর কাছাকাছি হবে। UV স্থানাঙ্কগুলি সামঞ্জস্য না করা কান্ডাল .ালু, গঠনটির প্রকৃতি প্রদত্ত ফলাফলের দৃশ্যমান লাফটি নজরে নাও যেতে পারে তবে এটি ভুল হবে still যাই হোক না কেন, হ্যাকের জন্য আরও পরামর্শ আমার আগের মন্তব্যে যে প্রশ্নটি চেয়েছিল তার উত্তরের উপর নির্ভর করবে।
এআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআ।

শিল্পকলাটি টেক্সচারের মাধ্যমে কোনও পটভূমি রক্তপাত নয়। আমি কোনও পরিবর্তন ছাড়াই পটভূমির রঙ লাল করে দিয়েছি। আমি টেক্সচারের স্থানাঙ্কগুলিও প্রসারিত করার চেষ্টা করেছি
মার্টিন পাইচ

0

পুরানো এইচডাব্লু (বা আইফোনস সম্ভবত) এর কিউব্যাপগুলি নিয়ে এটি স্বাভাবিক সমস্যা। জন্য পরীক্ষা করুন

GL_ARB_seamless_cube_map

এক্সটেনশন যদি এটি আপনার এইচডাব্লুতে উপলব্ধ থাকে। যদি তাই. সমস্যাটি সম্ভবত এটি ব্যবহার করে সমাধান করা হবে।


আইফোন নয়, জিফর্স ৯৯০০ এম তে সমস্যা রয়েছে। এই এক্সটেনশনটি আমার জন্য উপলব্ধ নয়।
মার্টিন পাইচ

এটি নির্বিঘ্নে বা নির্বিশেষে কিউব্যাপের ফলে এটি অবশ্যই সমস্যা নয় NOT এটি একটি টেক্সচার মোড়ানোর সমস্যা।
তারা

0

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

এটি আমার কাছে ঘটেছিল যে আপনার পাশের টেক্সচারের নীচের অংশটি নীল রঙের অনুরূপ শৈলী হিসাবে মনে হচ্ছে। আপনি কি বলতে পারেন, পিক্সেলের নীচের সারিটি (বা কয়েকটি সারি) ম্যাজেন্টার একটি জঘন্য ছায়া তৈরি করে দেখতে পারেন যে এটি আর্টফ্যাক্টের রঙ পরিবর্তন করে? এটি কী ঘটতে পারে বা কী ঘটতে পারে সে সম্পর্কে আরও কিছু ধারণা দিতে পারে।

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