//Loading the texture
GLuint g_texture;
glEnable(GL_TEXTURE_2D);
glGenTextures(1, &g_texture);
glBindTexture(GL_TEXTURE_2D, g_texture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, width, height, GL_RGB,GL_UNSIGNED_BYTE, data);
//and before drawing each of the four gl_quad vertexs:
textX=(float)x/(float)MAP_SIZE;
textY=(float)Height(X,Y)/(float)MAP_SIZE;
glTexCoord2f(textX, textY);
glVertex3i(x, y, -z);
yet another texture problem
Hello everybody,
I have a problem mapping a texture on a heightmap. I've checked previous threads refering to texture problems but i've found nothing that helped solving my problem, so here i go:
As i said, i have a heightmap loaded from a .raw file, and drawn as a set of quads in opengl. I want to map a single texture on the whole terrain, and not just repeating it on every quad, so, i apply a factor before doing the glTexCoord2f. Here goes a bit of the code:
The problem is, as you can see on the screenshots below, the texture stretches in the central part of the heightmap and i can't figure why. I also link a pic of the heightmap without texture and the .png texture itself.
Any help would we appreciated
Thanks
The calculation of the X of the texture coordinate looks fine, but why do you base the Y on the height of the map at a certain point? The center part looks flat, and if Height() returns the same value for all flat parts, then you get the same Y-coordinate everywhere.
Well this is exactly the result that you've coded.
You are mapping the Texture from the side to the terrain. You have to map it from top
You are mapping the Texture from the side to the terrain. You have to map it from top
//and before drawing each of the four gl_quad vertexs:textX=(float)x/(float)MAP_SIZE;//instead of//textY=(float)Height(X,Y)/(float)MAP_SIZE;//usetexY=(float)y/(float)MAP_SIZE;glTexCoord2f(textX, textY);glVertex3i(x, y, -z);
Thank you for your answers.
The Height(X,Y) function is used to build the Y coordinates of the heightmap (it gives back how "flat" a quad is).
Anyway, i had already tried without that function, just with
The Height(X,Y) function is used to build the Y coordinates of the heightmap (it gives back how "flat" a quad is).
Anyway, i had already tried without that function, just with
textY=(float)y/(float)MAP_SIZE
, but unfortunately, the result is exactly the same
Is the height of your terrain aligned to the y-axis?
If so you should try
texY=(float)z/(float)MAP_SIZE;
If so you should try
texY=(float)z/(float)MAP_SIZE;
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement