三角形绘制规则

428 阅读1分钟

draw 类型

image.png

三角形绘制规则

如果当前顶点是偶数:

组成三角形的顶点排列顺序:T = [n-2 n-1 n].

第一个三角形,顶点v2序号是2,是偶数,则顶点排列顺序是v0,v1,v2。

如果当前顶点是奇数:

组成三角形的顶点排列顺序:T = [n-1 n-2 n].

第二个三角形,顶点v3序号是3,是奇数,则顶点排列顺序是v2,v1,v3

image.png

为什么是这样子的呢?默认情况下,投影到屏幕后顶点顺序为逆时针的面为正面。

纹理坐标

image.png

float vertices[] = { 
    // ---- 位置 ---- ---- 颜色 ------------  -- 纹理坐标 
    -0.5f,  0.5f,   0.0f, 1.0f, 0.0f, 0.0f,   1.0f, 1.0f, // 右上
     0.5f, -0.5f,   0.0f, 0.0f, 1.0f, 0.0f,   1.0f, 0.0f, // 右下 
    -0.5f, -0.5f,   0.0f, 0.0f, 0.0f, 1.0f,   0.0f, 0.0f, // 左下 
    -0.5f,  0.5f,   0.0f, 1.0f, 1.0f, 0.0f,   0.0f, 1.0f // 左上 
};

image.png

例子:

float vertices[] = {
    //-- 位置 ----     -- 纹理坐标--
    400, 400, 0.0f,    1.0f, 1.0f,   // 右上
    400, 0,   0.0f,    1.0f, 0.0f,   // 右下
    0,   0,   0.0f,    0.0f, 0.0f,   // 左下
    0 ,  400, 0.0f,    0.0f, 1.0f    // 左上
};

unsigned int indices[] = { // 注意索引从0开始! 
    0, 1, 3, // 第一个三角形
    1, 2 ,3, // 第二个三角形
};

image.png