1

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

当我的墙壁很长时,图像会被拉伸,而当它们很小时,图像会被挤压。

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

glGenTextures(1,&texture);  
glBindTexture(GL_TEXTURE_2D,texture);   
LoadTGATexture(textureFile, GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, GL_REPEAT);

我给出纹理坐标的代码片段是:(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++;

我将长度后的重复设置为1。

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

我究竟做错了什么 ?

4

1 回答 1

5

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

于 2013-04-05T13:33:40.267 回答