Я пытаюсь разместить целую 2D сцену треугольников в окне. Я использую шейдерную программу для обработки рисования треугольников. Я только часть из 900 треугольников, которые я ожидаю увидеть. Однако когда я использую устаревший API OpenGL для рисования квадратов в похожей сцене, он работает как положено.
Это должно иметь отношение к матрице MVP, которую я передаю в вершинный шейдер. См. Метод paintGL()
в модуле scene.cpp . Именно здесь я настраиваю glViewport
и mvpMatrix
перед рисованием треугольников.
Я обрисовал в общих чертах, что я сделал ниже.
Инструменты
- Linux
- Qt 5.11.1
- OpenGL ES
Настройка
- Сцена 1М х 1М
- 900 треугольников добавляются в сцену с помощью шейдерной программы
- Это сетка из 30 х 30 треугольников, равномерно распределенных по сцене
Проблема
- Была сделана попытка разместить всю сцену внутри окна.
- В результате в окне видны только 75 из 900 треугольников.
Вот скриншот демонстрации треугольников .
Источник демонстрации "Треугольники":
- Модуль scene.cpp содержит метод
paintGL
.
- Модуль triangles.cpp предназначен для установки программы шейдера и построения треугольников.
- Полный источник демонстрации треугольников находится на github.
Что сработало
Я обнаружил, что использование устаревшего API OpenGL, рисование квадратов с помощью GL_QUADS, делает то, что я ищу. Тем не менее, я хотел бы использовать шейдеры.
Вот скриншот демонстрации squares . Это сетка из 10 х 10 квадратов в сцене размером 1 х 1 м
Источник демонстрации квадратов:
- Полный исходный код демо находится на github.