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