Java GLSL一致性行为
Java GLSL一致性行为,java,opengl,glsl,lwjgl,Java,Opengl,Glsl,Lwjgl,因此,为了开始我对着色器的初始化,我决定创建一个简单的 程序,其中渲染纹理(加载了平滑纹理)随着按键逐渐变暗。一切都按预期进行,但我似乎无法正确理解制服以及它们如何与着色器交互 这是我的简单顶点着色器: varying vec2 vTexCoord; void main() { vTexCoord = gl_MultiTexCoord0.xy; gl_Position = ftransform(); } uniform sampler2D myTexture; uniform
因此,为了开始我对着色器的初始化,我决定创建一个简单的 程序,其中渲染纹理(加载了平滑纹理)随着按键逐渐变暗。一切都按预期进行,但我似乎无法正确理解制服以及它们如何与着色器交互
这是我的简单顶点着色器:
varying vec2 vTexCoord;
void main()
{
vTexCoord = gl_MultiTexCoord0.xy;
gl_Position = ftransform();
}
uniform sampler2D myTexture;
uniform vec3 darknessParam;
varying vec2 vTexCoord;
void main()
{
gl_FragColor = texture2D(myTexture, vTexCoord).rgba * vec4(darknessParam, 1);
}
和片段着色器:
varying vec2 vTexCoord;
void main()
{
vTexCoord = gl_MultiTexCoord0.xy;
gl_Position = ftransform();
}
uniform sampler2D myTexture;
uniform vec3 darknessParam;
varying vec2 vTexCoord;
void main()
{
gl_FragColor = texture2D(myTexture, vTexCoord).rgba * vec4(darknessParam, 1);
}
因此程序按预期执行,但尽管我通常设置了uniformdarknessParam
,但我没有设置uniformsampler2D
,也没有在主java lwjgl程序中引用它。那么,片段着色器如何使用统一的sampler2D
,而无需我将其设置在任何位置提前谢谢,我为这篇冗长的帖子道歉。
祝你今天愉快 首先
sampler2D
是一种不统一的类型,因此我对问题a的解释如下:
我没有将myTexture
设置为任何值,为什么它仍然有效
要访问具有采样器对象的着色器中的纹理,必须将纹理单元的编号传递给均匀对象。请参见此处的示例:
假设现在使用的是纹理单元0,则不需要设置制服,因为所有制服都已初始化为0
从
链接操作成功后,所有活动的用户定义
属于程序的统一变量将初始化为0
首先
sampler2D
是一种不统一的类型,因此我对问题a的解释如下:
我没有将myTexture
设置为任何值,为什么它仍然有效
要访问具有采样器对象的着色器中的纹理,必须将纹理单元的编号传递给均匀对象。请参见此处的示例:
假设现在使用的是纹理单元0,则不需要设置制服,因为所有制服都已初始化为0
从
链接操作成功后,所有活动的用户定义
属于程序的统一变量将初始化为0
首先
sampler2D
是一种不统一的类型,因此我对问题a的解释如下:
我没有将myTexture
设置为任何值,为什么它仍然有效
要访问具有采样器对象的着色器中的纹理,必须将纹理单元的编号传递给均匀对象。请参见此处的示例:
假设现在使用的是纹理单元0,则不需要设置制服,因为所有制服都已初始化为0
从
链接操作成功后,所有活动的用户定义
属于程序的统一变量将初始化为0
首先
sampler2D
是一种不统一的类型,因此我对问题a的解释如下:
我没有将myTexture
设置为任何值,为什么它仍然有效
要访问具有采样器对象的着色器中的纹理,必须将纹理单元的编号传递给均匀对象。请参见此处的示例:
假设现在使用的是纹理单元0,则不需要设置制服,因为所有制服都已初始化为0
从
链接操作成功后,所有活动的用户定义
属于程序的统一变量将初始化为0
可能的重复,可能的重复你是对的。我投票决定了它的关闭,也可能是它的复制品,可能是复制品,你是对的。我投票决定了它的关闭,也可能是它的复制品,可能是复制品,你是对的。我投票决定了它的关闭,也可能是它的复制品,可能是复制品,你是对的。我也投票决定结束