Jak zmienić f glViewport aby uzyskać podany efekt

0

Witam, chciałabym tak zmienić funkcję glViewport aby długości trójkąta w stosunku do siebie była stałe, aby boki się nie zmieniały znaczy ich długość.

Generalnie to, to mam:


void reshape (int w, int h)
{
	glViewport(0, 0, (GLsizei) (2.6*w*h)/(w+h), (GLsizei) 2.6*w*h/(w+h));
}


Ale chciałabym aby nie było takiej sytuacji że odległość między końcami trójkąta a ekranem wyświetlanym raz jest bardzo duża innym razem "ucina" że tak powiem.

Próbowałam różnych zmian żadne nie dają rezultatu.

Wydaje mi się że aby było to możliwe, trzeba ustalić wymiary okienka, aby mogły zmieniać się tylko proporcojonalnie, gdy zmieniam długość zmienia się też wysokość etc, Jak i czy można to zrobić?

Sama widzę że napisałam nie jasno, a więc przykładowo:

Mam trójkąt którego przyprostokątne to 1 i 2 gdy zmienie okno, na długość na przykład to chce mieć przykładowo 2 i 4 a nie że tylko długość boku ulega zmianie.

I to generalnie udało mi się zrobić, efekty a raczej kod powyżej.

Chciałabym aby nie było sytuacji w których, wymiary okienka są zmienione w taki sposób że część trójkąta jest niewidoczna i powstaje jakby romb z niego.

Jedyny pomysł jaki mam, to sprawić aby podczas zmieniania długości okienka, zmieniać automatycznie jego wysokość.

Czy istnieją jakieś inne sposoby? I jak mogę wprowadzić w życie moją koncepcję?

0

Zostawiłbym Viewport w spokoju (czyli standardowo) a pokombinował z przekształceniem, czyli Frustum/Ortho2D/Perspective czy czego tam używasz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1