Texture Mapping on Surface

Is there anyway to map a texture on a surface instead of a 2D-plane?

I don’t understand your question very well, i think you mean instead of 1 texture on 1 quad, have 1 texture on a whole terrain. In this case you would just change the UV for each quad.

for example if you have one texture and a terrain 128x256 you would use an equation, (1/128)*x for U;(1/256)*y for V, do determine the coordinates for each quad where X and Y are points on the terrain.

I hope this could Help
ZIX

Sure there is! It just depends on how is your surface described. You can check out “Evaluators & NURBS” in The Red Book. OpenGL (and glu) gives some features allowing to draw curves and 3d surfaces. From what I know, you can then apply a texture to this surface.
Other solution is to divide your surface into number of triangles (or quads) and to map a texture on each primitive as if it was a 2D plane. It’s really a way to do that! More or less it is how terrain is presented in some of games.

Thank you zix99, thank you Orzech.

I have never tried the first solution. I will try it.

As to solution II, will it slow down the application and use a lot of video memory?

Originally posted by Orzech:
Sure there is! It just depends on how is your surface described. You can check out “Evaluators & NURBS” in The Red Book. OpenGL (and glu) gives some features allowing to draw curves and 3d surfaces. From what I know, you can then apply a texture to this surface.
Other solution is to divide your surface into number of triangles (or quads) and to map a texture on each primitive as if it was a 2D plane. It’s really a way to do that! More or less it is how terrain is presented in some of games.

[This message has been edited by Rong Yao (edited 08-13-2003).]

Originally posted by Rong Yao:
As to solution II, will it slow down the application and use a lot of video memory?

You mean dividing your surface into primitves, right? No - it’s one of the fastest ways of doing it. It all depends, of course, on a number of vertices and a method. You can do it easily without using video memory to save data. Storing all vertices in an array (for example GLfloat Vertex[100][3]) use mainborad memory and not the graphics cards one.