Przejście z widoku perspektywicznego do ortogonalnego Opengl

0

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

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.

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