Альфа-выборка текстур

#opengl #graphics #core-graphics #textures

#opengl #графика #ядро-графика #Текстуры

Вопрос:

Может кто-нибудь сказать мне, как я могу принудительно установить alpha на 1 в моем сэмплере?Я понимаю, что для этого потребуется использование

glSamplerParameteri(arg1, arg2, arg3)

Я не уверен, какими должны быть arg2 и arg3 .Я считаю, что arg1 — это имя сэмплера.

Ответ №1:

Вы не можете сделать это с помощью объекта sampler. То, что вы ищете, — это установить разбрызгивание текстуры, которое устанавливается для объекта текстуры, а не для объекта sampler.

Конкретная команда должна быть следующей:

 glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_ONE);
  

Для этого требуется реализация, поддерживающая OpenGL 3.3 или лучше, или расширение ARB_texture_swizzle.

Если у вас нет ни того, ни другого, просто установите это в шейдере.

Ответ №2:

Смотрите: http://www.opengl.org/sdk/docs/man4/xhtml/glSamplerParameter.xml о том, как использовать glSamplerParameter.

 void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param);
  

Параметры

sampler Указывает объект sampler, параметр которого необходимо изменить.

pname Задает символьное имя однозначного параметра сэмплера. pname может быть одним из следующих: GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, GL_TEXTURE_WRAP_R, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_MAX_LOD, GL_TEXTURE_LOD_BIAS GL_TEXTURE_COMPARE_MODE или GL_TEXTURE_COMPARE_FUNC.

параметр Задает значение pname.


Однако я не уверен в том, что вы пытаетесь сделать. Вы просто пытаетесь установить альфа-значение для некоторых пикселей в сэмплере? Если это так, то это неправильный подход, вам следует просто рисовать с нужными вам альфа-значениями (или очистить всю текстуру с помощью некоторого альфа-значения).

Комментарии:

1. Правильно … Я просмотрел страницу, но не знал, что делать… В любом случае, я провожу некоторую отладку, и просто для проверки возможной причины сбоя мне нужно убедиться, что мой сэмплер может принудительно преобразовать альфа-версию текстуры в единицу … есть ли способ сделать это? Возможно ли это вообще?