Проверьте ограничения GPU OpenGL - PullRequest
4 голосов
/ 15 февраля 2011

Мне было интересно, есть ли простой способ (программно) запросить ограничения графического процессора OpenGL для следующих функций:
- максимальный размер 2D текстуры
- максимальный размер 3D текстуры
- максимальное количество атрибутов вершинного шейдера
- максимальное количество различных поплавков
- количество единиц изображения текстуры (в вершинном шейдере и во фрагментном шейдере)
- максимальное количество буферов отрисовки

Мне нужно знать эти цифры заранее, прежде чем писать исследовательский проект по GPU.

Ответы [ 2 ]

11 голосов
/ 15 февраля 2011

glGet () ваш друг, с:

  • GL_MAX_3D_TEXTURE_SIZE
  • GL_MAX_TEXTURE_SIZE
  • GL_MAX_VERTEX_ATTRIBS
  • GL_MAX_VARYING_FLOATS
  • GL_MAX_TEXTURE_UNITS
  • GL_MAX_DRAW_BUFFERS

например:.

GLint result;
glGetIntegerv(GL_MAX_VARYING_FLOATS, &result);

Не совсем уверен, для чего предназначен ваш проект, но вас может заинтересовать OpenCL , если это вычисления общего назначения, а вы еще об этом не знали. В частности, Cl / GL interop , если имеется также графический элемент и ваше оборудование поддерживает его.

Как отметил Деймон в комментариях на практике, это может быть более сложным, чем это для размеров текстур. Проблемы возникают из-за того, что рендеринг может отойти от аппаратного обеспечения до программного обеспечения для некоторых размеров текстур, а также потому, что размер текстуры варьируется в зависимости от используемого формата пикселей. Чтобы обойти это, можно использовать GL_PROXY_TEXTURE_ * с glTexImage *.

1 голос
/ 16 февраля 2011

В дополнение к тому, что было сказано "awoodland", и если вы все еще не знаете ... я думаю, вам стоит взглянуть на GLEW ...

GLEW предоставляет эффективные механизмы времени выполнения дляопределение того, какие расширения OpenGL поддерживаются на целевой платформе.

http://glew.sourceforge.net/

...