В opengl-es 2.0 может быть рендеринг fbo для текстуры, использовать цель текстуры, которая больше, чем экран? Если да, можно ли рисовать текстурированный квадрат, заполняя угол fbo-текстуры до угла? Если это невозможно, можно сделать это по-другому в opengl-es? У меня есть многослойная обработанная процедурами графика во время загрузки, которую я хотел бы объединить в отдельные текстуры, чтобы сэкономить на производительности во время рисования.Opengl-es Рисование к текстуре
ответ
Да, абсолютно. Пока текстура имеет цветно-визуализируемый формат (который в ES 2.0 содержит только RGBA4
, RGB5_A1
и RGB565
), он может использоваться как цель рендеринга. В зависимости от пределов вашего графического процессора это может быть значительно больше разрешения экрана.
Это означает, что вы в основном ограничены максимальным размером текстуры. Вы можете запросить это значение с помощью glGetIntegerv(GL_MAX_TEXTURE_SIZE, ...)
.
Существует еще один предел, который вступает в игру. GL_MAX_VIEWPORT_DIMS
определяет максимальный размер видового экрана, который вы можете установить. Вы не можете визуализировать поверхность, превышающую эти значения.
Положив эти два вместе, это даст максимальный размер текстуры вы можете сделать, чтобы:
GLint maxTexSize = 0;
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize);
GLint maxViewportSize[2] = {0};
glGetIntegerv(GL_MAX_VIEWPORT_DIMS, maxViewportSize);
GLint maxRenderWidth = maxTexSize;
if (maxRenderWidth > maxViewportSize[0]) {
maxRenderWidth = maxViewportSize[0];
}
GLint maxRenderHeight = maxTexSize;
if (maxRenderHeight > maxViewportSize[1]) {
maxRenderHeight = maxViewportSize[1];
}
Используя эти значения, вы можете создать текстуру размером maxRenderWidth x maxRenderHeight
, и использовать его в качестве вложения FBO , Не забудьте установить область просмотра того же размера, что и перед началом рендеринга.
Я проверил ограничения на пару планшетов с графическими процессорами от двух разных крупных поставщиков. На обоих из них максимальный размер текстуры и максимальный размер видового экрана были одинаковыми (4096 на одном, 8192 на другом). Меня это не удивит, если это очень распространено, но это определенно не гарантируется спецификацией.
ES 2.0 позволяет максимальный размер текстуры быть размером 64. Но вы найдете, что предел будет намного больше на чем-либо наполовину недавнем. 2048 находится в нижней части того, что вы видите на любом разумно текущем графическом процессоре, и 4096/8192 является обычным явлением. Максимальные размеры видовых экранов гарантированно не меньше, чем на дисплее.
- 1. рисование рамки с разрешением в OpenGLES 2.0
- 2. Opengl - добавление к текстуре
- 3. Рисование нескольких растровых изображений только в одной текстуре
- 4. Рендеринг теней сцены к текстуре (выпечка текстуры)
- 5. Мне нужна помощь, добавив градиент к текстуре
- 6. openGL неприкрепленная текстура относится к другой текстуре
- 7. Sprite Animation - Доступ к рамке в текстуре
- 8. RTCI420Frame Объект к изображению или текстуре
- 9. WebGL: Доступ к текстуре в вершинном шейдере?
- 10. Как получить полный путь к текстуре материала?
- 11. Конфликт на OpenGLES на iOS
- 12. Может ли фреймбуфер OpenGLES 2.0 быть привязан к текстуре и рендерингу в одно и то же время?
- 13. Подход к решению для анимации кистей openGLES
- 14. Android OpenGLES Render-to-Texture
- 15. Как применить рисунок к динамической текстуре вместо спрайта?
- 16. О быстрых замена текстур для рендеринга openGLES
- 17. iOS Оказание объекта текстуре
- 18. Рисование к фону
- 19. Рисование текстуры к экрану
- 20. Дайте границу текстуре - SetPixel
- 21. OpenGLES различное поведение на различных устройствах
- 22. Android opengles 2d culling
- 23. OpenGLES 2.0: эквивалент gl_VertexID?
- 24. Ошибка смешивания OpenGLES, альфа накапливается
- 25. Фрагментные шейдеры на текстуре
- 26. Перекрытие пикселей в текстуре
- 27. Написать текстуре GLSL
- 28. Как визуализировать SCNScene текстуре
- 29. Предоставление полупрозрачного спрайта текстуре
- 30. Отдайте что-нибудь текстуре