Witam, jestem tu pierwszy raz. W c++ siedzę od dość dawna. Obecnie bawię się openglem 3. Tutaj pojawia się mój problem, a mianowicie jak przejść z widoku perspektywicznego do ortogonalnego? Chodzi tu głównie o zrobienie interface i gui. Chciałbym też zapytać jak można wykryć kolizję kursora z obiektem na scenie?
0
0
a mianowicie jak przejść z widoku perspektywicznego do ortogonalnego?
Korzystasz z 'domyślnych' shaderów i globalnych macierzy? Istnieją funkcje glLoadIdentity i glOrtho.
Chciałbym też zapytać jak można wykryć kolizję kursora z obiektem na scenie?
Określasz prostokąt, z którym kursor ma kolidować i sprawdzasz, czy ta kolizja następuje. (masz na myśli obiekt należący do interfejsu 2d, czy obiekt 3d?)
0
Jeśli korzystasz z własnych vertex shaderów, no to pewnie przesyłasz tam MVP matrix, i projection matrix oblicz według tego: (nie jestem na 100% przekonany o poprawności)
float4x4 ortho_projection_matrix(float nearf, float farf, float x, float y, bool inversed)
{
float4x4 result;
result[0][0] = 1.f / x;
result[0][1] = 0.f;
result[0][2] = 0.f;
result[0][3] = inversed ? 0.f : -1.f;
result[1][0] = 0.f;
result[1][1] = 1.f / y;
result[1][2] = 0.f;
result[1][3] = inversed ? 0.f : -1.f;
result[2][0] = 0.f;
result[2][1] = 0.f;
result[2][2] = 2.f / (float)(nearf - farf);
result[2][3] = (float)(farf + nearf) / (float)(nearf - farf);
result[3][0] = 0.f;
result[3][1] = 0.f;
result[3][2] = 0.f;
result[3][3] = 1.f;
return result;
}
Jeśli chodzi o jak można wykryć kolizję kursora z obiektem na scenie?
no to robisz ray test
korzystając z pozycji kursora, view matrix, i projection matrix.