过去我曾将纹理绑定到四边形上,然后用它进行渲染。如果我有一个动画,在其中需要将特定部分的图像绑定到四边形上,则只需使用通用坐标[0..1]即可。
问题是现在我再次尝试使用OpenGL,我看到GL_QUADS已经被弃用了,现在所有的东西都是用TRIANGLES渲染的。我的问题是我不知道如何使用三角形来绑定纹理。
谢谢
问题是现在我再次尝试使用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);
glVertexAttribPointer
代替。 - Bartek Banachewicz