在过去,我曾经将纹理绑定到 QUADS,然后用它渲染它们。如果我有一个动画,我必须将图像的特定部分绑定到四边形,那么我只需要使用通用坐标 [0..1] 就可以了。
问题是现在我再次尝试使用 openGL,我已经看到 GL_QUADS 已被弃用,现在我看到的只是用 TRIANGLES 渲染。我的问题是我不知道如何使用三角形绑定纹理。
谢谢
在过去,我曾经将纹理绑定到 QUADS,然后用它渲染它们。如果我有一个动画,我必须将图像的特定部分绑定到四边形,那么我只需要使用通用坐标 [0..1] 就可以了。
问题是现在我再次尝试使用 openGL,我已经看到 GL_QUADS 已被弃用,现在我看到的只是用 TRIANGLES 渲染。我的问题是我不知道如何使用三角形绑定纹理。
谢谢
这是一个如何将纹理绑定到的示例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);
代替单个四边形,将四边形分成 2 个三角形,类似于将四边形沿对角线切割。存在很多示例,stackoverflow 中最近的讨论如下: