struct vector3 { float x,y,z; }; // بنية تمثل رأس مثلث في الفراغ
// قائمة ثابتة برؤوس المثلث
vector3 triangle_vertices[] =
{
{ 0.5f, 1.0f, 0.0f }, // الرأس العلوي
{ 0.0f, 0.0f, 0.0f }, // الرأس الأيسر
{ 1.0f, 0.0f, 0.0f }, // الرأس الأيمن
};
float fScaleAmount = 0.0001f; // مقدار التضخيم كل لقطة
float fMoveAmount = 0.0001f; // مقدار الإزاحة كل لقطة
float fScaleAmountNow = 1.0f + fScaleAmount * fTimeElapsedInSeconds; // مقدار التضخيم في هذه اللحظة
float fMoveAmountNow = fMoveAmount * fTimeElapsedInSeconds; // مقدار الإزاحة في هذه اللحظة
// في دايركت ثري دي
D3DXMATRIX matScale,matMove;
D3DXMatrixTranslation(&matMove, fMoveAmountNow, 0.0f, 0.0f); // مصفوفة الإزاحة
D3DXMatrixScale(&matScale, fScaleAmountNow, fScaleAmountNow, fScaleAmountNow); // مصفوفة التضخيم
D3DXMATRIX matXForm = matScale * matMove; // المصفوفة الشاملة للتضخيم فالإزاحة
pD3DDevice->SetTransform(D3DTS_WORLD,&matXForm); // ضبط دايركت ثري دي ليستخدم المسفوفة الجديدة
pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLELIST,1,triangle_vertices,sizeof(float)*3); // الرسم
// في أوبن جي إل
glLoadIdentity(); // ضبط مصفوفة الوحدة
glScalef(fScaleAmountNow,fScaleAmountNow,fScaleAmountNow); // إضافة تحجيم على المصفوفة
glTranslatef(fMoveAmountNow,0,0); // إضافة إزاحة إلى المصفوفة
glVertexPointer(3, GL_FLOAT,0,triangle_vertices);
glDrawArrays(GL_TRIANGLES,0,3); // الرسم