سؤال

لقد قدمت مشروعًا جديدًا ونسخه إلى حد كبير هذا الدليل, ، ولكن كلما أسمي أي وظيفة OpenGL ، تم وضع علامة على البقعة // Drawing code here تحطم. لدي هذا هناك:

glViewport(0, 0, [self bounds].size.width, [self bounds].size.height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, [self bounds].size.width, [self bounds].size.height, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.375, 0.375, 0.0);

glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);

glColor3f(0, 0, 0);

glBegin(GL_LINES);
glVertex2f(10, 10);
glVertex2f(300, 300);
glEnd();

glFlush();

ولكن مجرد استدعاء وظيفة OpenGL واحدة تعطلها ، الإبلاغ GDB: Program received signal: "EXC_BAD_ACCESS". بادئ ذي بدء ، إذا نجحت ، هل هذا الرمز جيد؟ القيام بكل هذه الأشياء في الأعلى في كل مرة يتم فيها استدعاء؟ من المفترض أن يكون 2D ، مع الأصل في أعلى اليسار. ولماذا تتحطم؟ لديّ CoreVideo و OpenGL مرتبطًا واستيراد ... أريد الحصول على تطبيق الكاكاو لاستخدام OpenGL حتى أتمكن من التركيز على رمز اللعبة.

شكرًا.

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

المحلول

المقالة التي ربطتها ليست في الحقيقة مشروعًا كاملاً - إنه مجرد مناقشة وعينة من استخدام CVDisplayLink لقيادة حلقة الرسم. من المحتمل أن تفعل أفضل من خلال البدء بـ Apple's دليل البرمجة OpenGL.

نصائح أخرى

تحقق من myopenglview.m في رمز عينة Apple لـ GluflelScreen. يستخدمون cvdisplayLink بنجاح. الشيء المفقود في "قيادة OpenGL Rendering Loops" هو حقيقة أنك تحتاج إلى إضافة Mutex لتجنب اثنين من الخيوط التي تصل إلى سياق OpenGL نفسه.

يمكنك محاولة استبدال [الحدود الذاتية] .size.width" بأرقام مشفرة لمعرفة ما إذا كان هذا جزءًا من المشكلة.

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