繁体   English   中英

用GL_TRIANGLES绑定纹理

[英]Binding textures with GL_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);

将四边形分成两个三角形,而不是单个四边形,类似于在对角线上切割四边形。 存在很多示例,有关stackoverflow的最新讨论如下:

索引缓冲区对象和UV坐标效果不佳

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM