我正在尝试将纹理附加到多维数据集。目前,纹理正在拉伸。
我知道这是我的纹理坐标的一个问题,但我无法弄清楚是什么。
对于所有顶点位置(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);
当前输出:
答案 0 :(得分:0)
根据GL_REPEAT
和GL_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)
点。复制顶点以解决该问题。