有人能告诉我如何在我的采样器中强制将alpha设置为1?我认为它需要使用
glSamplerParameteri(arg1,arg2,arg3)
我不确定arg2和arg3应该是什么。我相信arg1是采样器名称。
答案 0 :(得分:1)
请参阅:http://www.opengl.org/sdk/docs/man4/xhtml/glSamplerParameter.xml了解如何使用glSamplerParameter。
void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param);
<强>取样强> 指定要修改其参数的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。
<强> PARAM 强> 指定pname的值。
但是,我不确定你要做什么。您是否只是尝试设置采样器中某些像素的alpha值?如果是这样,这是错误的方法,你应该只使用你想要的alpha值绘制(或用一些alpha值清除整个纹理)。
答案 1 :(得分:1)
您无法使用采样器对象执行此操作。你要找的是设置texture's swizzling,它在纹理对象上设置,而不是在采样器对象上设置。
具体命令如下:
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_ONE);
这需要支持OpenGL 3.3或更高版本的实现,或ARB_texture_swizzle扩展。
如果你没有其中任何一个,那么只需在着色器中设置它。