Java 纹理包裹,奇怪的边缘

Java 纹理包裹,奇怪的边缘,java,glsl,lwjgl,Java,Glsl,Lwjgl,我目前遇到了一个问题,我的纹理VBO在点的坐标开始环绕。我在纹理周围添加了一个30px的黄色边框,使效果更加突出。 近距离观察时,整个纹理几乎都被压扁并涂抹在黄线之间 纹理坐标代码(缓冲区[0]=顶点X,缓冲区[2]=顶点Y): 垂直着色器: uniform mat4 projection = mat4( 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,

我目前遇到了一个问题,我的纹理VBO在点的坐标开始环绕。我在纹理周围添加了一个30px的黄色边框,使效果更加突出。

近距离观察时,整个纹理几乎都被压扁并涂抹在黄线之间

纹理坐标代码(缓冲区[0]=顶点X,缓冲区[2]=顶点Y):

垂直着色器:

uniform mat4 projection = mat4(
                        1.0, 1.0, 1.0, 1.0,
                        1.0, 1.0, 1.0, 1.0,
                        1.0, 1.0, 1.0, 1.0,
                        1.0, 1.0, 1.0, 1.0);
uniform mat4 view = mat4(
                        1.0, 1.0, 1.0, 1.0,
                        1.0, 1.0, 1.0, 1.0,
                        1.0, 1.0, 1.0, 1.0,
                        1.0, 1.0, 1.0, 1.0);
uniform vec4 overrideColor = vec4(-1,-1,-1,-1);

in vec4 in_Color;
in vec4 in_Position;
in vec2 texCoord;

out vec4 pass_Color;
out vec2 pass_texCoord;

void main()
{
    gl_Position = projection * view * gl_Vertex;
    if (overrideColor == vec4(-1,-1,-1,-1))
    {
        pass_Color = in_Color;
    }
    else
    {
        pass_Color = overrideColor;
    }
    pass_texCoord = texCoord;
}

你正在使用一个精细的四边形网格,并试图在其上包裹一个大纹理,对吗?我认为问题在于一些四边形跨越包裹边界。您应该确保包裹边界正好出现在四边形的边缘上,或者按照我的建议,只需将纹理设置为包裹:

// when you set up your texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
然后不要对纹理坐标使用模数;[0,1]之外的坐标将自动换行/重复:

buffer[8] = buffer[0] * s; //tx
buffer[9] = buffer[2] * s; //ty

请参见和,了解纹理包裹的外观。

您正在使用一个精细的四边形网格,并尝试在其上包裹一个大纹理,对吗?我认为问题在于一些四边形跨越包裹边界。您应该确保包裹边界正好出现在四边形的边缘上,或者按照我的建议,只需将纹理设置为包裹:

// when you set up your texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
然后不要对纹理坐标使用模数;[0,1]之外的坐标将自动换行/重复:

buffer[8] = buffer[0] * s; //tx
buffer[9] = buffer[2] * s; //ty

请参阅和,了解纹理包裹的外观。

%
看起来可疑。你的坐标在那个点能小于零吗?试着在这里或那里添加一些
fab
。这是一个四元组,还是多个带有[0,1]的tex坐标的四元组?这是Java的,对吗?我更新了问题。我在修改coords前后添加了检查。所有坐标都在0.0-1.0范围内。是的,这是Java,我刚刚添加了要指定的标记。
%
看起来可疑。你的坐标在那个点能小于零吗?试着在这里或那里添加一些
fab
。这是一个四元组,还是多个带有[0,1]的tex坐标的四元组?这是Java的,对吗?我更新了问题。我在修改coords前后添加了检查。所有坐标都在0.0-1.0范围内。是的,这是Java,我刚刚添加了标签来指定。谢谢。我只是看了看我的AssetManager,它被设置为将_夹紧到_边缘,而不是重复。在改变之后,去掉我的模量包装,纹理平铺得很好。谢谢。我只是看了看我的AssetManager,它被设置为将_夹紧到_边缘,而不是重复。改变后,去掉我的模量包装,纹理平铺正确。