2013-04-29 7 views
9

मेरे उपयोगकर्ताओं के एक बहुत ही छोटे प्रतिशत (< 1%) मेरे गेम के ओपनजीएल यूआई के साथ एक अजीब विरूपण का अनुभव कर रहे हैं। ऐसा लगता है कि मेरा पिक्सेल-परिपूर्ण प्रोजेक्शन सेटअप:अजीब ओपनजीएल पिक्सेल इम्पेरफेक्शन

glViewport(0, 0, clientSizeWidth, clientSizeHeight); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(0, clientSizeWidth, clientSizeHeight, 0, -1.0, 1.0); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
double transAmount = 0.375; 
glTranslated(transAmount, transAmount, 0.0); 

उनके सिस्टम पर समस्याएं पैदा कर रहा है। और मैं अपने सिस्टम के बारे में विवरण इकट्ठा करने में असफल रहा हूं, लेकिन मेरा मानना ​​है कि वे सफलता के साथ समान ओपनजीएल गेम चला सकते हैं। तो मुझे विश्वास है कि मेरा कोड गलती है। यहाँ

visual artifacts

और दृश्य कलाकृतियों के बिना एक तस्वीर है (ओएस में अंतर पर ध्यान न दें):

यहाँ दृश्य कलाकृतियों की एक तस्वीर है

without visual artifacts

हालांकि मेरी गेम स्केल अंतिम रूप से 2x होने के लिए प्रस्तुत करता है, यह 1x रेंडर perfo के बाद glSubTexImage2D पर एक कॉल के माध्यम से ऐसा करता है rmed। इसका मतलब है कि पहले स्क्रीनशॉट में कलाकृतियों पिक्सेल दोगुनी से पहले उपस्थित थे (इसलिए कलाकृतियों को पिक्सेल दोगुना क्यों किया जाता है)। तो पिक्सेल दोगुना खुद मुद्दा का स्रोत नहीं हो सकता है।

इस पर कोई विचार क्या हो सकता है? मैं वर्तमान में परीक्षण करने का कोई रास्ता नहीं है। उपयोगकर्ताओं के भारी बहुमत (स्वयं शामिल) का कोई दृश्य कलाकृतियों का अनुभव नहीं है।

संपादित करें (30 अप्रैल): एक पोलिश उपयोगकर्ता ने मुझे सूचित किया है कि उसके वीडियोकार्ड ने इन कलाकृतियों का अनुभव किया है और यह "एनवीडिया 9500 जीएस" है। सुनिश्चित नहीं है कि इसका मतलब 9500M GS या 9500 GT है, लेकिन दोनों काफी आधुनिक दिखते हैं।

+0

'0.375' कहां से आता है? –

+0

@ बेनवोइग यह ओपनजीएल रेडबुक से है। [यह] देखें (http://glprogramming.com/red/appendixg.html#name1) या [यह] (http://msdn.microsoft.com/en-us/library/ms537007%28VS.85%29। aspx)। –

+3

तथ्य यह है कि यह 1) केवल कुछ सतहों पर होता है 2) विभिन्न सतहों के लिए अलग-अलग पैमाने पर होता है, यह एक बड़ा संकेत होना चाहिए कि समस्या कोड कहां होगा। – Patashu

उत्तर

6

9 0% संभावना है, इस समस्या का सामना करने वाले उपयोगकर्ता को कुछ गैर-डिफ़ॉल्ट मान पर उनके एनवीडिया नियंत्रण कक्ष में बनावट गुणवत्ता स्विच है। आपके मामले में, GL_NEAREST को ऐसे मुद्दों से बचने में मदद करनी चाहिए (इसलिए यह upscaled छवियों के लिए पड़ोसी texels औसत नहीं होगा)। लेकिन सबसे पहले, सिद्धांत को साबित करने या तोड़ने के लिए डिफ़ॉल्ट रूप से एनवीडिया नियंत्रण कक्ष सेटिंग सेट करने के लिए कहें।

+0

ty ty ty ty!विशेष एनवीडिया ओवरराइड 'एंटीअलाइजिंग - मोड' लगता है, मैंने इसका परीक्षण किया और इसी तरह की पिक्सेल अपूर्णताओं को मिला। केस हल हो गया! –

संबंधित मुद्दे