纹理采样阿尔法

时间:2011-11-09 20:01:48

标签: opengl graphics core-graphics textures

有人能告诉我如何在我的采样器中强制将alpha设置为1?我认为它需要使用

glSamplerParameteri(arg1,arg2,arg3)

我不确定arg2和arg3应该是什么。我相信arg1是采样器名称。

2 个答案:

答案 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扩展。

如果你没有其中任何一个,那么只需在着色器中设置它。