我需要设置一个“依赖纹理”,以便使用一个纹理查找的返回值来确定从第二个纹理中查找的位置。
你能指点我正确的gl API调用吗?
答案 0 :(得分:3)
我需要设置一个“依赖纹理”,以便使用一个纹理查找的返回值来确定从第二个纹理中查找的位置。
这只能使用着色器完成。
你能指点我正确的gl API调用吗?
你要求API调用:这里它们是:
glCreateShader
创建新的着色器对象glShaderSource
将着色器源代码加载到着色器对象glCompileShader
编译已加载的着色器源glCreateProgram
创建程序对象glLinkProgram
将着色器对象链接到程序glUseProgram
实际使用通过上述调用创建的着色器程序glUniform1i
将片段着色器采样器制服设置为源于另外,你没有要求它们,但你也需要它们,这里是所需的GLSL语言元素:
sampler…
制服将纹理单位绑定到texture
GLSL函数。使用采样纹理的值来确定下一个纹理坐标的纹理坐标。答案 1 :(得分:1)
喜欢这个。
uniform sampler2D coord_texture;
uniform sampler2D sampling_texture;
uniform vec2 InvWinSize;
void main(void){
vec2 uv = gl_FragCord.st*InvWinSize;
vec2 tex_coord = texture(coord_texture, uv).st;
vec4 sampled = texture(sampling_texture,tex_coord);
}
我使用屏幕坐标访问了第一个纹理,但你可以使用你需要的任何uv,例如,uv来自顶点着色器:
uniform sampler2D coord_texture;
uniform sampler2D sampling_texture;
in vec2 uv;
void main(void){
vec2 tex_coord = texture(coord_texture, uv).st;
vec4 sampled = texture(sampling_texture,tex_coord);
}