即使使用GL_REPEAT,为什么我的纹理也会拉伸?

Anu*_*bha 1 opengl 3d graphics textures texture-mapping

在此输入图像描述这是我的输出:![在此输入图像描述] [2]

当我的墙很长时,图像被拉伸,当它们很小时,图像被挤压.

我的加载纹理代码,loadTGATexture方法来自superBible.

glGenTextures(1,&texture);  
glBindTexture(GL_TEXTURE_2D,texture);   
LoadTGATexture(textureFile, GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_REPEAT);
Run Code Online (Sandbox Code Playgroud)

我给出纹理坐标的代码片段是:(j是建筑物墙的索引)

    buildingArray[j][0] = n2.x;
    buildingArray[j][3] = 0;
    buildingArray[j][4] = n2.y;

    texBlgArray[j][0] = repeat_after_length;
    texBlgArray[j][5] = 0;

    normals[j][0] = normal.x;
    normals[j][6] = normal.y;
    normals[j][7] = normal.z;

    j++;
Run Code Online (Sandbox Code Playgroud)

我将长度重复设置为1.

我认为,如果长度> 1,纹理GL_REPEAT会发生,我应该将其设置为大于1的某个值,但是如果我这样做,纹理中的窗口变得非常小而且大而不是.窗户是可见的.我想要平铺纹理,我不希望我的纹理纹理图像的尺寸有任何变化:在此输入图像描述

我究竟做错了什么 ?

Bar*_*icz 5

即使在长墙上,您的纹理坐标也可能被标准化(即它们的左角为[0,0],右下角为[1,1]).如果要重复纹理,则需要超过 1.0的坐标.因此,如果三角形边的长度是x,则纹理应该超过x*some k.