Согласно man page, правильное значение перечисления для этого вызова будет GL_STENCIL_COMPONENT
, не GL_STENCIL_COMPONENTS
(обратите внимание на заднюю S
).
Как оказалось, страница руководства неверна. К сожалению, это не является чем-то необычным. Если вы посмотрите в спецификации (например, таблица 8.17 на стр. 225 в документе спецификации OpenGL 4.5), допустимыми значениями для DEPTH_STENCIL_TEXTURE_MODE
являются GL_DEPTH_COMPONENT
и GL_STENCIL_INDEX
.
Исходя из этого, вызов должен быть:
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, GL_STENCIL_INDEX);
Эта функция требует OpenGL 4.3 или выше.
GL_STENCIL_COMPONENTS
является действительным аргументом для glGetInternvalFormativ()
, но не для glTexParameteri()
.
Ah..see Мне было интересно об этом, так как это страница для упомянутого расширения, но я не мог найти GL_STENCIL_COMPONENT в любом месте glext.h. У меня есть, поэтому я подумал, что, возможно, они переименовали его или что-то в этом роде. Например, это не в заголовке [this] (https://www.opengl.org/registry/api/GL/glext.h), который имеет определения для 4.3 ... –
Вы не знаете, где он определен для вас? Кажется, я нигде не знаю, как это определить! –
@RamonJohannessen Хороший звонок. Оказывается, что страница пользователя сломана, и этого значения на самом деле не существует. См. Новую версию ответа. –