إزالة المضلعات من الشاشة (OpenGL)؟
سؤال
لنفترض أن الكود هو:
glLoadIdentity();
glTranslatef(-1.5f,0.0f,-6.0f);
glBegin(GL_TRIANGLES);
glVertex3f( 0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glEnd();
glLoadIdentity();
//Drawing another object...
كيف يمكنني تغيير الرمز لمسح الكائن؟أعلم أن التعليق على glTranslatef() سيؤدي إلى مسح المثلث، لكن هل هذه هي الطريقة الرسمية للقيام بذلك؟
المحلول
إذا وضعت GlClear في بداية وظيفة السحب (عادة ما تكون وظيفة السحب عادة في حلقة)، فيمكنك ببساطة عدم إعادة رسم مثلث المثلث، مما يجعله من شأنه أن يترك أي إشارة إلى مثلثك.
أيضا، GLTRANSLATEF () لن يؤدي إلى إزالة مثلثك، GLTRANSLATEF () هو مجرد وظيفة لنقل المصفوفة الحالية (في حالتك، يتم نقل مصفوفة المصفوفة باستخدام مثلثك إلى عرض الكاميرا)
glclear ()
http://www.khronos.org/opengles/documentation/opengles1_0 / html / glclear.html
نصائح أخرى
إذا كنت تسأل عن كيفية جعل مثلث يذهب بعيدا في إطارات لاحقة، فلا حاجة.كل وقت للإطار هو المسؤول عن إعادة رسم كل شيء.OpenGL لن تتذكر مثلثك.
وضع if
حول glBegin
...glVertex
...glEnd
ستكون الطريقة الأكثر مباشرة.