Quiero mostrar modelos de diferentes tamaños en una vista, de modo que todo el modelo esté visible dentro de la pantalla.
¿Cuál es la mejor manera de hacerlo? He intentado escalar (usando glScale) el modelo usando esta fórmulaEncajar modelo 3D dentro de una ventana
scaleFactor = (screenSize/(maxModelSize * constant))
donde el tamaño es la altura o anchura, dependiendo de lo que es más grande.
constante es 1/(length of one screen pixel in OpenGL units)
Hay dos problemas con este:
1. después de hacer algunas transformaciones, quiero ser capaz de volver a esta escala inicial (modelo se escala para ajustarse a la ventana) usando la identidad. Actualmente, la identidad de llamada llevará el modelo a sus dimensiones originales (antes de la escala de "fijación").
2. La "constante" es algo que obtuve por ensayo y error, me parece un método incorrecto. También sospecho que no es una constante en absoluto, y depende de la resolución de la pantalla y Dios sabe qué más.
"Después de hacer algunas transformaciones, quiero ser capaz de volver a esta escala inicial (modelo es escalado para ajustarse a la ventana) usando Identity. La identidad de llamada actual traerá el modelo a sus dimensiones originales (antes de la escala de "fijación"). Esto me sugiere que está escalando la matriz ModelView. ¿Tal vez deberías intentar escalar la matriz de proyección en su lugar? En otras palabras, crea una cámara más grande, no un modelo más pequeño. – Zecc