سؤال

أنا أكتب تطبيقا iPhone الذي يستخدم UIVIEW مع CAEAGLAYER كطبقة لها. كل شيء على ما يرام والعمل بصرف النظر عن مشكلة صغيرة واحدة: في بعض الأحيان تعطل مع exc_bad_access وتتبع المكدس التالي:

giveacodicetagpre.

تعطل على الخط:

giveacodicetagpre.

سوف تعطل فقط أثناء تغيير دوران الواجهة (يحدث أيضا أن يكون أيضا الحالة الوحيدة عند تغيير إطار العرض). لا تعطل في كثير من الأحيان؛ معظم الوقت يستغرق 3-5 دقائق من الجهاز الدوارة لإعادة إنتاج هذه المشكلة.
أعتقد أنني ارتكب خطأ يرتبط بتغيير تهيئة / إطار Caeagllayer لأن هذا هو المكان الذي تعطله (أعتقد).
إذن هنا هي طرق التفسير الفرعي والتخطيط:
INIT:

giveacodicetagpre.

على إطار تعيين أنا فقط اضبط مصكالات gl_modelview و gl_pojection، لذلك أعتقد أن شيئا سيئا يمكن أن يحدث هناك.
layoutsubviews:

giveacodicetagpre.

رسم طريقة نفسها تبدو:

giveacodicetagpre.

أقدر أي تعليقات على التعليمات البرمجية أو الاقتراحات المدرجة حول كيف يمكنني معرفة سبب هذا الخطأ.

هل كانت مفيدة؟

المحلول

سأكون مشكما في متغير totalPoints الذي يتم تمريره إلى Drawrays، أو ربما قيمك ل Vertexcordinates أو TextUreCoordinates، إذا كانت هذه الصفائف ليست ثابتة.التعطل الخاص بك يعني أنك تمشي في نهاية الذاكرة أثناء رسم المصفوفات.أنا أقل مشبوهة من إعداد GL الخاص بك وأكثر قلقا بشأن إدارة الذاكرة الخاصة بك، وماذا ترسم هذا يختلف خلال الدوران.

(أيضا، FWIW، لا أعتقد أنه يجب أن تدعو RenderBufferstorage في كل مرة تقوم فيها بترتيب المخزن المؤقت التجسدي. يجب عليك فقط القيام بذلك مرة واحدة عندما تنشئها. قلت، لست متأكدايجب أن لا تدمر بالفعل المخازن المؤقتة عند تغيير حجمها وإعادة إنشاءها من الصفر.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top