簡體   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