i'm trying to get my texture to be tiled when texture-coordinates go beyond 1.

I have tried this:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT),

How ever, when settings these two lines, all I see is black color, no texture at all!

This works, but doesn't give the repeating effect, which i need:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Help! I've used already couple of hours to investigate with no results!

有帮助吗?

解决方案

Setting GL_TEXTURE_WRAP_S and GL_TEXTURE_WRAP_T to GL_REPEAT requires your texture dimensions to be powers of two.

其他提示

You can convert texture coordinate values greater than one to values in the range 0...1 by discarding the fractional part. Here's some code you can put in your fragment shader, assuming that the texture coordinates are in texture_coord:

        texture_coord.x = mod(texture_coord.x,1.0);
        texture_coord.y = mod(texture_coord.y,1.0);
        gl_FragColor = texture2D(s_texture,texture_coord);

I have tested this in OpenGL ES 2.0 and it works as expected, allowing you to use textures of any size, not just powers of two.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top