В GLUT мы можем зарегистрировать обратный вызов, когда размер просмотра будет изменен. И часто выглядит функция Reshape , которая изменяет матрицу проекции перспективы.void reshape(int width, int height)
{
w = width;
h = height;
glViewport(0, 0, w, h);
float aspect = (float) w / (float) h;
float zNear = 0.1;
float zFar = 99.0;
float fovy = glm::radians(45.0f);
projection = glm::perspective(fovy,aspect,zNear,zFar); // Why is fovy unchanged?
// Now send the updated projection matrix to the shader
glUniformMatrix4fv(projectionPos, 1, GL_FALSE, &projection[0][0]);
}
< /code>
Другой пример - этот ответ. Я не понимаю, почему Fovy (поле зрения в направлении Y)-это постоянная, которую мы можем выбрать во всех этих реализациях. Почему это не зависит от размера видоубийта, например: < /p>
float fovy = 2*glm::atan(h/(2*zNear)); // arc tangent
< /code>
Viewport эквивалентен ближней плоскости. Если высота просмотра увеличена или уменьшена, не должен ли FOV также меняться соответственно? Потому что определение поля вида является углом от нижней части экрана (ViewPort) до верхней части экрана (ViewPort). Я, наверное, пропустил что -то очень очевидное.
Подробнее здесь: https://stackoverflow.com/questions/796 ... ing-window
Почему Фови должен быть неизменным при изменении размера окна ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1749016255
Anonymous
В GLUT мы можем зарегистрировать обратный вызов, когда размер просмотра будет изменен. И часто выглядит функция Reshape , которая изменяет матрицу проекции перспективы.void reshape(int width, int height)
{
w = width;
h = height;
glViewport(0, 0, w, h);
float aspect = (float) w / (float) h;
float zNear = 0.1;
float zFar = 99.0;
float fovy = glm::radians(45.0f);
projection = glm::perspective(fovy,aspect,zNear,zFar); // Why is fovy unchanged?
// Now send the updated projection matrix to the shader
glUniformMatrix4fv(projectionPos, 1, GL_FALSE, &projection[0][0]);
}
< /code>
Другой пример - этот ответ. Я не понимаю, почему Fovy (поле зрения в направлении Y)-это постоянная, которую мы можем выбрать во всех этих реализациях. Почему это не зависит от размера видоубийта, например: < /p>
float fovy = 2*glm::atan(h/(2*zNear)); // arc tangent
< /code>
Viewport эквивалентен ближней плоскости. Если высота просмотра увеличена или уменьшена, не должен ли FOV также меняться соответственно? Потому что определение поля вида является углом от нижней части экрана (ViewPort) до верхней части экрана (ViewPort). Я, наверное, пропустил что -то очень очевидное.
Подробнее здесь: [url]https://stackoverflow.com/questions/79651986/why-fovy-should-be-unchanged-when-resizing-window[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия