2013-01-07 20 views
11

वर्तमान में एप्लिकेशन क्रैशबफर (अग्रभूमि में चलते समय, कोई बाधा उत्पन्न नहीं होती है)।gpus_ReturnGuiltyForHardwareRestart क्रैश

यह पहले फ्रेम में क्रैश नहीं हो रहा है, यह थोड़ी देर के लिए खींचता है तो यह अचानक दुर्घटनाग्रस्त हो जाता है।

मेरे पास पुन: पेश करने के लिए सटीक कदम नहीं हैं, लेकिन कुछ विशिष्ट ड्राइंग से संबंधित प्रतीत होता है, फिर भी मेरे पास कोई खुली जीएल त्रुटि नहीं है, जिसमें एप्लिकेशन को गड़बड़ कर दिया गया है, जिसमें वर्तमान त्रुटि फ्रेम से पहले एक त्रुटि जांच भी शामिल है। यदि मैं वर्तमान से पहले ग्लिफिन जोड़ता हूं तो फ़्रेमबफर ग्लिफिश में क्रैश हो जाएगा।

एप्लिकेशन EXC_BAD_ACCESS (कोड = 1, पता = 0x1) और उपरोक्त कॉलस्टैक के साथ किसी भी अन्य त्रुटि/लॉग/डीबग जानकारी के साथ क्रैश हो रहा है।

थ्रेड 1, कतार: com.apple.main धागा

>  #0 0x36871e46 in gpus_ReturnGuiltyForHardwareRestart() 
>  #1 0x36872764 in gpusSubmitDataBuffers() 
>  #2 0x31eae624 in SubmitPacketsIfAny() 
>  #3 0x378a337a in gliPresentViewES() 
>  #4 0x325b6df2 in -[EAGLContext presentRenderbuffer:]() 
>  #5 0x0052986e in EAGLContext_presentRenderbuffer(EAGLContext*, objc_selector*, unsigned int)() 
>  #6 0x000e2a48 in -[EAGLView presentFramebuffer] at /svn/src_svn/GG/iphone/Classes/EAGLView.mm:228 
>  #7 0x000e4066 in -[GGViewController drawFrame] at /svn/src_svn/GG/iphone/Classes/GGViewController.mm:504 
>  #8 0x3809ab0a in __NSFireTimer() 
>  #9 0x39d36856 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__() 
>  #10 0x39d36502 in __CFRunLoopDoTimer() 
>  #11 0x39d35176 in __CFRunLoopRun() 
>  #12 0x39ca823c in CFRunLoopRunSpecific() 
>  #13 0x39ca80c8 in CFRunLoopRunInMode() 
>  #14 0x39b9333a in GSEventRunModal() 
>  #15 0x3551b288 in UIApplicationMain() 
>  #16 0x000e1bae in main at /svn/src_svn/GG/iphone/main.m:14 

किसी को भी इस एक के बारे में कोई सुराग नहीं है

यहाँ callstack दुर्घटना में रिपोर्ट किया गया है?

उत्तर

12

यदि आप वीएओ का उपयोग कर रहे हैं, तो यह इंडेक्स बफर (तत्व सरणी बफर) वर्टेक्स बफर सीमा (वीबीओ) से परे शीर्षकों का संदर्भ देने के कारण हो सकता है।

, ध्यान रखें कि तत्व सरणी बफर VAO में संग्रहीत किया जाता है, ताकि जब तक VAO बाध्य है, glBindBuffer की प्रत्येक कॉल (GL_ELEMENT_ARRAY_BUFFER) सूचकांक बफर बदल देता है। यदि आप अपने दृश्य के अगले ऑब्जेक्ट पर जाते समय वीएओ को अनबिंड करना भूल जाते हैं तो आप पिछले कॉल के वीएओ को बदल देंगे। यहाँ पर

और जानकारी: http://www.opengl.org/wiki/Vertex_Specification#Index_buffers

और डीबगिंग टिप: अपने शीर्ष बफ़र्स बड़े आकार, यह एक गड़बड़ है कि आप तो XCode की OpenGL ES फ्रेम पर कब्जा उपकरण के साथ निरीक्षण कर सकते हैं में इस दुर्घटना बदल सकता है (इस XCode की आवश्यकता है 4.5 और आईओएस 6)।

+1

अच्छा डिबगिंग टिप। –

1

ऐसा लगता है कि समस्या GL_TEXTURE1 के लिए glEnableClientState (GL_TEXTURE_COORD_ARRAY) होने के कारण हुई थी लेकिन वर्टेक्स बफर में वास्तविक डेटा प्रदान नहीं कर रहा था।

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