[英]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的最新討論如下:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.