Blog literacki, portal erotyczny - seks i humor nie z tej ziemi
void TForm1::SetViewport(bool Perspective)
{
float w, h, Aspect;
// zmienne zewnętrzne
w=Width;
h=Height;
// dla uniknięcia dzielenia przez zero
if(h==0)
h=1;
// Ustaw widok na całą powierzchnię roboczą okna.
glViewport(0, 0, w, h);
// Wybierz macierz rzutowania
// (wszystkie operacje od tej chwili będą dotyczyły
// wyłącznie macierzy rzutowania).
glMatrixMode(GL_PROJECTION);
// Załaduj macierz jednostkową (niezmiennik transformacji).
glLoadIdentity();
// Jeśli zażądano rzutowania perspektywicznego...
if(Perspective)
{
// ustaw odpowiednie parametry.
Aspect=(GLfloat)w/(GLfloat)h;
gluPerspective(60.0f, Aspect, 1.0f, 1000.0f);
}
// W przeciwnym przypadku ustaw rzutowanie równoległe
else
{
if(w<=h)
glOrtho(-250.0f, 250.0f, -250.0f*h/w, 250.0f*h/w, 1.0f, 1000.0f);
else
glOrtho(-250.0f*w/h, 250.0f*w/h, -250.0f, 250.0f, 1.0f, 1000.0f);
}
// Przywróć macierz transformacji modelu.
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}