Opengl 纹理采样α

Opengl 纹理采样α,opengl,graphics,core-graphics,textures,Opengl,Graphics,Core Graphics,Textures,有人能告诉我如何在我的采样器中将alpha设置为1吗?我想这需要使用 glSamplerParameteri(arg1、arg2、arg3) 我不确定arg2和arg3应该是什么。我相信arg1是采样器名称。有关如何使用glSamplerParameter的信息,请参阅 void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); 参数 取样器 指定要修改其参数的采样器对象 pname 指定单值采样器参数的符号名称。

有人能告诉我如何在我的采样器中将alpha设置为1吗?我想这需要使用

glSamplerParameteri(arg1、arg2、arg3)

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

有关如何使用glSamplerParameter的信息,请参阅

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

参数 取样器 指定要修改其参数的采样器对象

pname 指定单值采样器参数的符号名称。pname可以是以下选项之一:GL_纹理包裹、GL_纹理包裹、GL_纹理包裹、GL_纹理包裹、GL_纹理最小过滤器、GL_纹理贴图过滤器、GL_纹理最小细节、GL_纹理最大细节、GL_纹理细节偏移GL_纹理比较模式或GL_纹理比较功能

参数 指定pname的值



然而,我不确定你想做什么。您只是想在采样器中设置一些像素的alpha值吗?如果是这样,这是错误的方法,您应该只使用所需的alpha值进行绘制(或使用某些alpha值清除整个纹理)。

您不能使用采样器对象进行此操作。您要查找的是设置,这是在纹理对象上设置的,而不是在采样器对象上设置的

具体命令如下:

glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_ONE);
这需要一个支持OpenGL 3.3或更高版本的实现,或者ARB_texture_swizzle扩展


如果您没有这两个选项,那么只需在着色器中设置它。

对……我确实查看了页面,但不知道该做什么……无论如何,我正在进行一些调试,只是为了测试失败的可能原因,我需要确保我的采样器可以强制纹理的alpha为1……有办法做到这一点吗?有可能吗?