gpt4 book ai didi

java - 纹理包裹,奇怪的边缘

转载 作者:行者123 更新时间:2023-12-02 03:26:28 25 4
gpt4 key购买 nike

目前,我的纹理 VBO 在坐标开始环绕时遇到问题。我在纹理周围添加了 30 像素的黄色边框,以使效果更加突出。 enter image description here

仔细观察时,看起来几乎整个纹理都被挤压并涂抹在黄线之间。

enter image description here

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

if ((buffer[0] * s) < 0) Logger.logDebug(buffer[8]+","+buffer[9]);
if ((buffer[2] * s) < 0) Logger.logDebug(buffer[8]+","+buffer[9]);
buffer[8] = (buffer[0] * s) % 1f; //tx
buffer[9] = (buffer[2] * s) % 1f; //ty
if (buffer[8] > 1f || buffer[9] > 1f) Logger.logDebug(buffer[8]+","+buffer[9]);
if (buffer[8] < 0f || buffer[9] < 0f) Logger.logDebug(buffer[8]+","+buffer[9]);

我对低于 0 或高于 1 的坐标的检查均未通过,因此它们在正确的范围内。

碎片着色器:

#version 150 core

uniform sampler2D texture1;
in vec4 vColor;

in vec4 pass_Color;
in vec2 pass_texCoord;
out vec4 out_Color;

void main()
{
out_Color = pass_Color;
out_Color = texture(texture1, pass_texCoord.st);
}

垂直着色器:

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

参见thisthis纹理包裹的样子。

关于java - 纹理包裹,奇怪的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38809279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com