过去我曾经将纹理绑定到QUADS,然后用它渲染它们。如果我有一个动画,我必须将图像的特定部分绑定到四边形,那么我只需要使用通用坐标[0..1],那就是全部。
问题是现在我正在尝试使用openGL,我已经看到GL_QUADS被弃用了,现在我看到的所有东西都是用TRIANGLES渲染的。我的问题是我不知道如何使用三角形绑定纹理。
由于
答案 0 :(得分:4)
以下是如何将纹理绑定到GL_TRIANGLE_STRIP
float verts[] = {
0, 0,
w, 0,
0, h,
w, h,
};
const float texcoord[] = {
u1 + 0 , v1 + v2,
u1 + u2, v1 + v2,
u1 + 0 , 0 + v2,
u1 + u2, 0 + v2
};
/*
1. uv(0,1) +-----+ 2. uv(1,1)
| /|
| / |
| / |
| / |
|/ |
3. uv(0,0) +-----+ 4. uv(1,0)
*/
你可以像使用
一样简单glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, tex_coord);
glVertexPointer(2, GL_FLOAT, 0, verts);
glBindTexture(GL_TEXTURE_2D, texture_id);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisable(GL_TEXTURE_2D);
答案 1 :(得分:0)
而不是单个四边形,将四边形分成两个三角形,类似于在对角线上切割四边形。存在很多示例,最近在stackoverflow中的讨论如下: