Mam ten sam problem co w tym temacie:
http://cpp0x.pl/forum/temat/?id=9248
Jednak ja nie zmieniam (na razie) zmiennej centerz - góra/dół - a centerx - lewo/prawo - i wtedy powstają te dziwne przekształcenia:
http://www.sendspace.pl/file/pic/ca061eb78d8a07c0ac33c76/1
Używam funkcji:
gluLookAt( eyex, eyey, eyez, centerx, centery, centerz, 0, 1, 0 );
Natomiast glFrustum() tak (cała funkcja 'Reshape'):
void Reshape( int width, int height )
{
// obszar renderingu - całe okno
glViewport( 0, 0, width, height );
// wybór macierzy rzutowania
glMatrixMode( GL_PROJECTION );
// macierz rzutowania = macierz jednostkowa
glLoadIdentity();
//
gluPerspective( angle, 1.333, 1,15.0 );
// parametry bryły obcinania
if( Aspect == ASPECT_1_1 )
{
// wysokość okna większa od wysokości okna
if( width < height && width > 0 )
glFrustum( - 2.0, 2.0, - 2.0 * height / width, 2.0 * height / width, 1.0, 15.0 );
else
// szerokość okna większa lub równa wysokości okna
if( width >= height && height > 0 )
glFrustum( - 2.0 * width / height, 2.0 * width / height, - 2.0, 2.0, 1.0, 15.0 );
}
else
glFrustum( - 2.0, 2.0, - 2.0, 2.0, 1.0, 15.0 );
// generowanie sceny 3D
Display();
}
Tak używam gluPerspective:
gluPerspective( angle, 1.333, 1,15.0 );
Zmienna 'angle' wynosi 0 bo inaczej nie widać w ogóle sześcianu.
Nawet jak użyje gluPerspective to nic się nie zmienia więc jak zapobiec tym przekształceniom?