texturing problem

Started by
7 comments, last by _gl_coder_one_ 18 years, 1 month ago
I draw two textured quads(1d texturing ) with tex coords shown below. My assumption ws that the quads will be colored as mirror images of each .. thats how i have specified the tex coords. But it does not happed so. Have a look at it here OGL_TEX_PROB 0_1 |_| 0 0 1_0 |_| 0 0 sorry for the real bad diagram . hope it suffices The quads are drwan with counter clockwise winding with the bottom left vertex first. Shouldnt the coloring produced for the two quads be mirror images of each other ???? [Edited by - _gl_coder_one_ on March 6, 2006 1:24:36 PM]
Advertisement
No takers for this one ?
Have a look at the link it shoulg give u a good idea of the problem
OK, the description of the problem is kind of fuzzy and empty and I'm a bit slow at understanding what other ppl mean. You could say what you expected to happen there. ;)
But anyway, if what is going on is that you wanted a smooth transition between the colors (just a guess.. very vague) then you should set linear filtering to the texture.
Okay
I hope the following diagrams make it easier to understand.

sorry the dia looks bad here ... its basically a square with the tex coords specified at the vertices . Please look at the link below for a better pic

The top right image of the page is drawn with texx coords as below :

0 ____ 1
|        |
|        |
|        |
|____|
0     0

The bottom right image is draw as follows
1____ 0
|        |
|        |
|        |
|____|
0     0

The quads are drwan with counter clockwise winding with the bottom left vertex first.

Shouldnt the coloring produced for the two quads be mirror images of each other ????
I have put up a fresh image please hav a look
tex_prob
please post the code for drawing the quads and textures. in theory it should look something like this

p.s. bear in mind i'm a Visual Basic programmer not C/C++ so you're code will probs look a little different

glbegin bmquads ' First Quad
gltexcoord2f 0f,0f: glvertex3f 0f,0f,0f
gltexcoord2f 0f,1f: glvertex3f 0f,1f,0f
gltexcoord2f 1f,0f: glvertex3f 1f,0f,0f
gltexcoord2f 1f,1f: glvertex3f 1f,1f,0f
glend

glbegin bmquads ' Second Quad
gltexcoord2f 1f,0f: glvertex3f 0f,0f,0f
gltexcoord2f 1f,1f: glvertex3f 0f,1f,0f
gltexcoord2f 0f,0f: glvertex3f 1f,0f,0f
gltexcoord2f 0f,1f: glvertex3f 1f,1f,0f
glend

Remember to bind the right texture and set the correct filtering. In theory this should give you an image that I believe you are trying to get.
The problem you're encountering is that there's no such thing as a quad for your computer, that square is actualy 2 triangles together!

It's not like this:

x---x
|....|
|....|
x---x

It's like this:

x---x
|.\.1|
|2.\.|
x---x

(my ASCII art sucks)

So, if you look at the 2nd triangle on your first quad you'll notice that all it's vertices have texture coordinate 0, while on the second quad that same triangle has one vertex with tex. coord. 1 and two others with 0.

Oh yeah, and the solution is what AndyEsser said. If you're drawing that quad like:
Vertex1 - Vertex2 - Vertex3 - Vertex4
then you can reverse the triangles division drawing like:
Vertex3 - Vertex4 - Vertex1 - Vertex2
error C2065: 'signature' : undeclared identifier
you should use the texture matrix to do this.
It is used in the same way as the modelview and projection matrix


you may not do this



0 1
x----x
| |
| |
x----x
0 0

or

0 1
x----x
| |
| |
x----x
1 0


you must always do

0 1
x----x
| |
| |
x----x
0 1

or

1 1
x----x
| |
| |
x----x
0 0




and if it doesnt work that way, use the texture matrix
sorry for the wrong drawing

dont do this

0      1
x----x
|      |
|      |
x----x
0      0

or

0      1
x----x
|      |
|      |
x----x
1      0


you must always do

0      1
x----x
|      |
|      |
x----x
0      1

or

1      1
x----x
|      |
|      |
x----x
0      0




assiging tex coords like that is not possible as the tex coords are generated procedurally ... and checkin for that particular case would be not right ... i posted the same problem at the opengl.org forum and found out that such a thing is s problem due to the way he quad is rendered and that a fragment shader can be used to change the way the texturing happens .. u can have a llok at the post here ,,,

OPENGL

This topic is closed to new replies.

Advertisement