OpenGL纹理拉伸

时间:2012-11-05 02:31:03

标签: java opengl textures

我正在尝试将纹理附加到多维数据集。目前,纹理正在拉伸。

我知道这是我的纹理坐标的一个问题,但我无法弄清楚是什么。

对于所有顶点位置(x,y,z),我创建了纹理坐标(x,y)。

float [] texCoords = new float [2*allPoints.size()];
int index= 0;
for(int i = 0; index< allPoints.size()-1; i=i+2){
           texCoords[i] = (float)allPoints.get(index).getX();
           texCoords[i+1] = (float)allPoints.get(index).getY();
           index++;
}

glTexParameters:

gl2.glTexParameteri( GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER,GL.GL_NEAREST);
gl2.glTexParameteri( GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER,GL.GL_NEAREST);
gl2.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_S,GL.GL_REPEAT);
gl2.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_WRAP_T,GL.GL_REPEAT);

当前输出:

enter image description here

1 个答案:

答案 0 :(得分:0)

根据GL_REPEATGL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T的参数,如果超过该边界,OpenGL中的纹理坐标将缩放为0-1。

我不知道你的allPoints列表的组织,但是对于一个立方体,每个顶点会有多个唯一的纹理坐标,所以你需要复制你的顶点。如果您手工绘制或考虑它,顶点上的1纹理坐标对于相邻面也必须为0

每个面应具有以下纹理坐标:

(0, 1)--(1, 1)
|            |
|            |
|            |
(0, 0)--(1, 0)

现在考虑立方体上的面,(1, 1)点是相邻面的(0, 1)点。复制顶点以解决该问题。