Opengl 通过单个片段着色器将两个纹理渲染到两个单独的对象上

Opengl 通过单个片段着色器将两个纹理渲染到两个单独的对象上,opengl,glsl,textures,lwjgl,fragment-shader,Opengl,Glsl,Textures,Lwjgl,Fragment Shader,我一直试图通过一个片段着色器将两个纹理渲染到它们自己的对象上,但我一直遇到问题。有人能告诉我这是否可行,或者怎么做吗 我的片段着色器: #version 460 core in vec3 passColor; in vec2 passTextureCoord; out vec4 outTex; uniform sampler2D tex; uniform sampler2D tex2; void main(){ outTex = texture(tex, passTextureC

我一直试图通过一个片段着色器将两个纹理渲染到它们自己的对象上,但我一直遇到问题。有人能告诉我这是否可行,或者怎么做吗

我的片段着色器:

#version 460 core

in vec3 passColor;
in vec2 passTextureCoord;

out vec4 outTex;

uniform sampler2D tex;
uniform sampler2D tex2;

void main(){
    outTex = texture(tex, passTextureCoord);
    outTex = texture(tex2, passTextureCoord);
}

不清楚“单个片段着色器”是什么意思。如果要渲染“两个单独的对象”,那么这可能意味着要发出两个单独的绘制调用,是吗?实际上,在两个单独的渲染操作中使用相同的片段着色器。那么为什么您的FS一次只使用一个采样器,却有两个采样器呢?这就像你有一个函数,它接受一个
int
,然后加上5。如果您想从代码中的20个不同位置调用它,该函数不接受20个整数。它只是在使用的每个地方得到不同的参数。@rabbi76我为缺乏信息而道歉,但为了回答你的问题,纹理属于两个不同的网格。这不只是这个问题的延续吗。我看不出这个新问题有什么不同,除了@rabbi76给出的答案之外,可能还有更多的问题需要解决。@httpdigest我想基本上是这样,现在我想起来了。@rabbi76我想这是有道理的