Recentemente ho pensato che sarebbe una buona idea passare dalla vecchia (deprecata) funzionalità fornita da OpenGL, come le operazioni con le matrici e la pipeline di funzioni fisse.glm :: ortho() ha effettivamente torto?
Sto usando GLM come libreria Matrix per semplificare un po 'le cose. Il problema è che potrebbe aver causato più problemi di quanto non fosse ...
Le proiezioni prospettiche funzionavano bene con i miei shader e setup, ma quando ho provato a passare a ortogonale, tutto si è rotto. I miei punti e quads semplici non verrebbero visualizzati. Quando ho usato le vecchie matrici OpenGL, le cose hanno iniziato a funzionare di nuovo.
Ho ridotto tutto alla matrice di proiezione. Ecco come l'ho chiamato:
glm::mat4 projMat = glm::ortho(0, 400, 0, 400, -1, 1);
ho confrontato che a quella fornita da OpenGL una volta che questo si chiama"
glOrtho(0, 400, 0, 400, -1, 1);
Le uniche differenze sono il [0] [0] elemento e [1 ] [1] elemento (che, per quanto ne so, è uguale a "2/larghezza" e "2/altezza", rispettivamente). Dalla matrice OpenGL, i valori erano esattamente così! Sulla matrice glm, però, i valori erano 0.
Dopo aver passato manualmente i valori dalla matrice glm dopo aver chiamato glm :: ortho, tutto funzionava di nuovo!
Quindi la mia domanda: la funzione glm :: ortho() è veramente rotta o sto semplicemente usando male?
Wow, sei stato perfetto! Dopo aver cambiato i miei parametri in float, tutto ha funzionato. Grazie per aver chiarito questo :) –