2016-11-25 4 views
1

Я интересно, почему функция GLES20.glDeleteTextures() имеет три параметров в OpenGL ES 2.0 в то время как «стандартный» glDeleteTextures() имеет только два параметров.Почему glDeleteTextures() имеет три параметра в OpenGL ES 2.0?

Даже в documentation есть только два параметра.

Однако в моей программе и на многих форумах функция принимает третий параметр (всегда 0 из того, что я видел).

Итак, что это за третий параметр?

EDIT: другие функции имеют эту «проблему». glGetIntegerv() также принимает, казалось бы, бесполезный третий параметр (еще int) в OpenGL ES 2.0.

+1

Третий параметр - это смещение, которое в большинстве случаев использования будет равно 0. Андроиды docs показывают, что он использует оба: https://developer.android.com/reference/android/opengl/GLES20.html#glDeleteTextures(int, java .nio.IntBuffer) Я могу предположить то же самое для других вызовов. Для полного списка см. Https://developer.android.com/reference/android/opengl/GLES20.html. – WLGfx

ответ

1

Это не связано с ES 2.0 по сравнению с другими версиями OpenGL.

В справочной документации показаны привязки OpenGL C/C++.

Что вы используете, когда вы вызываете GLES20.glDeleteTextures(), являются привязками Java, определенными для Android. Очевидно, что они должны выглядеть иначе, потому что они предназначены для другого языка программирования. Связи Java также не стандартизированы, поэтому они определены таким образом, который имеет смысл для людей, ответственных за Android.

0

Это офсет (на основе Android documentation). Например,

int[] textures = {id0, id1, id2, id3, id4, id5}; 
GLES20.glDeleteTextures(2, textures, 3); 

Здесь количество текстур, чтобы удалить это 2, от смещения 3. Так что только текстуры с id3 и id4 будут удалены.

Это может быть общим UseCase использовать функцию следующим образом:

GLES20.glDeleteTextures(textures.length, textures, 0); 

Какие должны удалить все текстуры в textures массиве.

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

  • Нет связанных вопросов^_^