2013-04-16 3 views
3

Я играл вокруг с некоторым старым кодом OpenGL и у меня возникли некоторые проблемы с этим ...OpenGLES: Как найти размер текстуры

glGetTexParameterfv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &glW); 
glGetTexParameterfv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &glH); 

Теперь я новичок в OpenGL, но я предполагаю, что это захватывает высота и ширина текстуры. Проблема заключается в том, что OpenGLES не имеет GL_TEXTURE_WIDTH или HEIGHT. Теперь я знаю, что первый ответ, который каждый собирается дать, - «вам нужно управлять этим самостоятельно», однако, это довольно большая база кода, и это займет некоторое время, чтобы понять это.

Мой вопрос ...

Как я могу получить ширину/высоту текстуры в OpenGLES?

ответ

3

Очевидный вопрос реакции: зачем нужна эта информация?

Очевидный вопрос в стороне, размер текстуры непосредственно не отображается. Лучшее, что вы, вероятно, сможете сделать, это использовать glTexSubImage, проверяя GL_INVALID_VALUE, чтобы найти размер - мое чтение GLES man page состоит в том, что width = height = 0 не является условием ошибки, поэтому вы можете охотиться за наибольшим (x, y), который принят без фактической загрузки каких-либо данных.

+0

Я ценю вашу реакцию, поскольку я уверен, что она правильная, но я относительно новичок во всем этом (OpenGL и даже C в этом отношении), это может занять некоторое время. Так как это займет некоторое время, я поместил его на задний план, пока не получу порт для работы, тогда я снова перейду. Я попытаюсь использовать glTexSubImage и посмотреть, смогу ли я сделать то, что я ищу, еще раз спасибо! – Jackie

+0

Единственное, что вызывает вопрос, это то, что OpenGL имеет нормализованную систему координат, поэтому когда загруженные текстуры всегда имеют координаты между 0 и 1. Это не означает, что вы иногда не хотите знать размер - например, если вы написали гауссовское размытие или любую другую свертку ядра, то в качестве шейдера вам действительно понадобится знать размер пикселя текстуры. Поэтому вопрос заключался скорее в том, чтобы попытаться выяснить, есть ли какой-либо другой соответствующий совет, который можно дать, а не как критика. Это только при чтении, что я понимаю, насколько суровым оно выглядит. – Tommy

+0

Нет, я слышал, что он более суровый и, кроме того, ясно, что вы очень осведомлены, поэтому я могу немного критиковать :-). Я на самом деле пытаюсь переносить prboom + в OpenGLES на Android, и это было где-то в gl-рендеринге. Я думаю, что это был спрайт или что-то вроде изображения, поэтому я предположил, что он хотел, чтобы информация рисовала его в нужном размере. Мне пришлось преобразовать его в glReadBuffer, поэтому я предполагал, что буду использовать те же значения для высоты и ширины, но, возможно, я думаю о чем-то неправильном. – Jackie

Смежные вопросы