최근 seedbased 하이트 맵 생성기를 완성하고 생성 된 지형에 텍스처를 추가하려고합니다. 우선 드로잉을 위해 GL_TRIANGLES를 사용했던 내 TerrainRenderer에 텍스처 렌더링을 구현했습니다.glTexCoord2f()를 사용하여 삼각형 스트립 텍스처링하기?
이 내 시험 텍스처와 아주 잘 작동 :
여기에 내 옛날 렌더링 코드입니다 :
for(int z = 0; z < terrain.terrainSizeZ-1; z++) {
GL11.glBegin(GL11.GL_TRIANGLES);
for(int x = 0; x < terrain.terrainSizeX-1; x++) {
GL11.glTexCoord2f(1, 0);
GL11.glVertex3f(x*size, terrain.terrain[x][z], z*size);
GL11.glTexCoord2f(1, 1);
GL11.glVertex3f(x*size, terrain.terrain[x][z+1], (z+1)*size);
GL11.glTexCoord2f(0, 0);
GL11.glVertex3f((x+1)*size, terrain.terrain[x+1][z], (z)*size);
GL11.glTexCoord2f(0, 0);
GL11.glVertex3f((x+1)*(size), terrain.terrain[x+1][z], z*size);
GL11.glTexCoord2f(1, 1);
GL11.glVertex3f(x*size, terrain.terrain[x][z+1], (z+1)*size);
GL11.glTexCoord2f(0, 1);
GL11.glVertex3f((x+1)*size, terrain.terrain[x+1][z+1], (z+1)*size);
}
GL11.glEnd();
}
가 그럼 난 내 렌더러를 재 작성하고 큰 FPS 향상을 위해 GL_TRIANGLE_STRIP을 사용했다. 원시 지형이 완벽하게 렌더링됩니다.
그래서 텍스처를 추가하려고했지만 삼각형 선에 대한 텍스처 좌표를 계산하는 방법을 알 수 없습니다. 내가하는 일은 중요하지 않습니다. 항상 하나 이상의 텍스처가 올바르게 회전하지 않습니다.
private static void render() {
[...]
for(int z = 0; z < terrain.terrainSizeZ-1; z++) {
GL11.glBegin(GL11.GL_TRIANGLE_STRIP);
for(int x = 0; x < terrain.terrainSizeX-1; x++) {
nextTextureCoord();
GL11.glVertex3f(x*size, terrain.terrain[x][z], z*size);
nextTextureCoord();
GL11.glVertex3f(x*size, terrain.terrain[x][z+1], (z+1)*size);
}
clearTextureCoord();
GL11.glEnd();
}
[...]
}
private static int texCoord = 0;
private static void nextTextureCoord() {
if(texCoord == 0)
GL11.glTexCoord2f(1, 0);
else if(texCoord == 1)
GL11.glTexCoord2f(1, 1);
else if(texCoord == 2)
GL11.glTexCoord2f(0, 0);
else if(texCoord == 3)
GL11.glTexCoord2f(0, 1);
if(texCoord < 3)
texCoord++;
else
texCoord = 0;
}
private static void clearTextureCoord() {
texCoord = 0;
}
정말 고마워요. – nik2038