В настоящее время я разрабатываю игровой движок/фреймворк для игры, которую я намерен развивать. Я проектирую систему как можно более развязанную через абстрактные классы и инъекции зависимостей. В идеале я стараюсь, чтобы каждая подсистема не зависела от других частей движка.Можно ли определить размер фреймбуфера по умолчанию только с помощью OpenGL?
В моей системе рендеринга я хотел бы предоставить возможность сброса области просмотра и области ножниц/обрезки до размера привязанного в данный момент целевого объекта для рендеринга (будь то OpenGL FrameBuffer, Direct3D RenderTarget или бэкбуффер по умолчанию) без необходимости заставить программиста следить за ним и не полагаться на оконную подсистему/другую библиотеку или писать код, зависящий от системы.
В настоящее время я кодирую реализацию подсистемы рендеринга OpenGL, и я хотел проверить, можно ли получить размер буфера кадров backbuffer/default, используя только вызовы функций OpenGL 3.3. Раньше я писал код, используя GLX/WGL, хотя я бы хотел этого избежать.
Я наткнулся на этот вопрос, который был задан ранее: How to get/set the width and height of the default framebuffer?
Однако ни окончательного ответа не было дано. Ответ, говорящий о получении ширины/высоты области области просмотра/scissor, работает только в том случае, если окно никогда не изменяется, что очень хорошо может в моем приложении, а другой ответ не будет работать, потому что фреймбуфер по умолчанию не является фактический объект фреймбуфера и, следовательно, не может быть запрошен как таковой (если комментаторы верны)
Итак, существует ли какой-либо метод определения размера фреймбуфера/backbuffer по умолчанию на лету, используя только OpenGL 3.3, или мне нужно будет зависит от другого подсистемы/записи, зависящей от кода?
Спасибо за быстрый и решительный ответ! Я боялся столько же, поэтому я, вероятно, просто оставлю это для пользователя в этом случае. Также я просто хотел сказать, что я использую glLoadGen, когда мне нужен заголовок GL, благодаря созданию такого фантастического инструмента! – LivePastTheEnd