Primitivlar murakkabligini kamaytiring.
Ko‘pgina hollarda katta tekisliklarni keragidan ortiqcha qismlarga bo‘lib tashlamaslik uchun ogoh bo‘ling. Masalan sifat va unumdorlikning eng yaxshi o‘zaro nisbatini belgilash uchun GLU primitivlari bilan tajriba o‘tkazing. Teksturalangan obyektlar, masalan, geometriyaning o‘rtacha murakkabligi bilan sifatli tasvirlanishi mumkin.
Displey ro‘yxatidan foydalaning.
Tez-tez chaqirilgan obyektlar uchun displey ro‘yxatidan foydalaning. Displey ro‘yxati grafik nimtizimida saqlanishi mumkin va demak, asosiy xotiradan ma’lumotlarni tez-tez olib o‘tilishini olib tashlash mumkin. [A]
Uchlarning kerak bo‘lmagan atributlarini ko‘rsatmang.
Agar yorug‘lik o‘chirilgan bo‘lsa, glNormal buyrug‘ini chaqirmang. Agar tekstura ishlatilmayotgan bo‘lsa, glTexCoord buyrug‘ini chaqirmang, va b. [barchasi]
glBegin/glEnd orasidagi ortiqcha kodlar sonini kamaytiring.
high-end tizimlarida maksimal unumdorlik, uchlar haqidagi axborot grafik nimtizimga maksimal darajada tez uzatilishi uchun muhim. glBegin/glEnd o‘rtasida ortiqcha kodlardan yiroqlashing.
Muvaffaqiyatsiz echimga misol:
glBegin(GL_TRIANGLE_STRIP);
for (i=0; i < n; i++)
{
if (lighting)
{
glNormal3fv(norm[i]);
}
glVertex3fv(vert[i]);
}
glEnd();
Bu konstruksiya shunisi bilan yomonki, biz lighting o‘zgaruvchisini har bir uch oldidan tekshiramiz. Bunday holatdan qochish mumkin, kodning qismlangan nusxasi hisobiga:
if (lighting)
{
glBegin(GL_TRIANGLE_STRIP);
for (i=0; i < n ;i++)
{
glNormal3fv(norm[i]);
glVertex3fv(vert[i]);
}
glEnd();
}
else
{
glBegin(GL_TRIANGLE_STRIP);
for (i=0; i < n ;i++)
{
glVertex3fv(vert[i]);
}
glEnd();
}
O‘zgartirish
O‘zgartirish o‘zida, oyna koordinatalari, kesish, yorug‘lik va boshqalarni berishda ishlatiladigan glVertex*() bilan ko‘rsatiluvchi koordinatalar orqali uchlarning o‘zgarishini namoyon etadi.
Yorug‘lik
Yorug‘likning lokal manbalaridan foydalanishdan qochish, ya’ni manba koordinatalari (x,y,z,0) shaklida bo‘lishi kerak. [D]
Yorug‘likning nuqtasimon manbasidan foydalanishdan qochish. [barchasi]
Ikki tomonlama yoritishdan (two-sided lighting) foydalanishdan qochish. [barchasi]
Yorug‘lik va material parametrlaridagi manfiy koeffisientlardan foydalanishdan qochish. [D]
Yorug‘likning lokal modelidan foydalanishdan qochish. [barchasi]
GL_ShININESS materiali parametrining tez-tez almashishidan qochish. [D]
OpenGL ning ba’zi amalga oshirishlari yorug‘likning bitta manbasi holi uchun optimallashtirilgan. [A, D]
Yorug‘likni oldindan hisoblab chiqish imkonini ko‘rib chiqish. Normal o‘rniga uchga rang berish orqali yorug‘lik effektiga ega bo‘lish mumkin. [barchasi]
Do'stlaringiz bilan baham: |