Texture help

I want to wrap textures around a cylinder made with GL_QUAD_STRIP.

The coordinates i have given are cos(theta),y,sin(theta).

How to wrap a texture around it???what are the TexCoord2f() going to be??Please some one help me.I am having prolem with it.Im getting a distorted image.

try theta as s coordinate and y as t.

The side of the cylinder form a square or a rectangle ( this depend of the height/circonference ratio) when you unwrap it. The formula for the u coordinate can be something like this : u = angle/(2*PI) (angle is in radian). For the v coordinate, use v = y/(height of cylinder) for a y axis cylinder => TexCoord2f(u,v). But keep in mind that the texture on the cylinder may appear stretched vertically if the cylinder is tall (ratio of height/circonference > 1), or appear stretched horizontally if the cylinder is small(ratio of height/circonference < 1). So if the ratio of height/circonference != 1, you have two choices, use a rectangle texture if your graphic card support it that meet the ratio above, or use a square texture with coordinates range that meet the ratio (v/u = height/circonference), some part of the square texture are empty. I don’t know if there exist some routine in OpenGL or GLU that can scale a texture.

For a square texture, texture coordinates must be between [0 1] for u and v. Here I assume your cylinder start at height y = 0 => y [0 height]. If the origin(0,0,0) is in the center of your cylinder before transformation => y is in the range [-height/2 height/2] then v = ((y/height) + 0.5) to stay the v coordinate between [0 1].

When i use the angle value i am getting the same texture multiple times??

Your angle is defined in degree or radian? If it is in degree, u = angle/360 to stay it in the range [0 1].

But i got another problem.When i move my robot Im getting artifacts on it

This one is hard to resolve without an image to see. You don’t need to recalculate texture coordinates each time you move your cylinder, just calculate once. For multitexture I recommend to use glsl. The fixed function way of doing multitexturing is limited in the choice of effect you can use and is not very easy to use.

If your artifact happen when two or more surfaces of your robot overlap, then you suffer Z-fighting. This is due to the depth buffer precision which cannot resolve two or more differents surfaces that are close together. The solutions to avoid this is not simple. You can use polygon offset(not easy), stencil test, or for your robot, cylinder of different radius, a sphere large enough to cover the joint of your cylinders if the artifacts are there.

Hi sir,

I have a question please answer me …

I am trying to do multitexturing on the cylinder(made up of polygons)surface.

I am able to place single texture image on the cylinder surface, but i am not able to place multiple images on it.

Please Help me Sir.

Any answer will appreciated.

Advance Thanks.