我想使用openGL ES 2.0(Android => Java)创建一个0.2米x 1.05米的平面,并用重复的方形纹理(尺寸0.1米x 0.1米)覆盖它。因此,我将在长度上有10.5个纹理,在宽度上有2个纹理。
任何人都可以帮忙处理一些代码吗?
感谢。
答案 0 :(得分:2)
像G.M.说它很容易,只需将纹理设置为重复采样,这样当UV值低于或大于(0 - 1)时它就会包裹。我不使用Java,但它大致看起来像这样:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, imgWidth, imgHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, loadedImg);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// LOOKING DOWN Y AXIS
// TRIANGLE1 TRIANGLE 2
// *0 *3 *5
//
// *1 *2 *4
// POS UVs
float vertices[] = { 0.f, 0.f, 0.f, 0.f, 0.f,
0.f, 0.f, 0.2f, 0.f, 2.f,
1.05f, 0, 0.2f, 10.5f, 2.f,
0.f, 0.f, 0.f, 0.f, 0.f,
1.05f, 0.f, 0.2f, 10.5f, 2.f,
1.05f, 0.f, 0.f, 10.5f, 0.f };
基本上,飞机的远侧不是(1,1),而是远侧的UV值为(10.5,2),包裹超过十次。