2016-08-06 19 views
0

座標が折り返し始める時点で、テクスチャ付きVBOで問題が発生しています。エフェクトをより目立たせるため、テクスチャの周りに30pxの黄色の境界線を追加しました。近いそれを見てenter image description hereテクスチャラッピング、奇妙なエッジ

は、それが全体の質感が押しつぶさと黄色のラインの間にまみれているほとんどかのように見えます。

enter image description here

テクスチャは([2] =頂点Yバッファ、[0] =頂点Xバッファ)コードは、座標0以下または渡された1以上の座標のための私のチェックの

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]); 

なし、彼らは正しい範囲にあります。

FRAGシェーダ:

#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; 
} 
+0

'% 'は疑わしいと思われます。あなたの座標はその時点でゼロよりも小さいことができますか?ここにいくつかの 'fabs'を追加してみてください。 – usr2564301

+0

そのすべてが1つのクワッドか、[0,1]からのテックス・コードを持つ複数のものですか? – qxz

+0

これはJava版です – qxz

答えて

2

あなたは正しい、大腿四頭筋の細かいグリッドを使用して、それらを越え、大きなテクスチャをラップしようとしていますか?私は、いくつかのクワッドがラップ境界を越えて広がっているというのが問題だと思います。あなたはラップ境界が右大腿四頭筋の端に発生していることを確認してください、または私が推薦するように、ちょうどラップにあなたのテクスチャを設定する必要があり、次のいずれか

// 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); 

その後テクスチャ座標のための係数を使用していません; COORDSは外[0,1]自動的に/リピートをラップします:

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

はラッピングがどのように見える質感のためthisthisを参照してください。

+0

ありがとうございます。私はAssetManagerを見て、REPEATではなくCLAMP_TO_EDGEに設定しました。それを変更し、モジュラスラッピングを削除した後、テクスチャは適切にタイル張りされます。 – CConard96