游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1731|回复: 3

请问 这个三角形是怎么生成的?

[复制链接]

12

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2006-2-18 17:26:00 | 显示全部楼层 |阅读模式
我刚学几天 目前只会定义2D 三角形
struct CUSTOMVERTEX
{
    FLOAT x, y, z, rhw; // 顶点的变换位置.
    DWORD color;        // 顶点颜色.
};
CUSTOMVERTEX vertices[] =
{
    { 150.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
    { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
    {  50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
};

这个顶点的定义我还可以理解 这是三角形的3个顶点的坐标位置与rhw与色






这是上面矩形的全部顶点信息
CUSTOMVERTEX cvVertices[] =
    {
        //Top Face  顶部 2个三角形
        {-1.0f, 1.0f, -1.0f, D3DCOLOR_XRGB(0, 0, 211),}, //Vertex 0 - Blue
        {-1.0f, 1.0f, 1.0f, D3DCOLOR_XRGB(211, 0, 0),}, //Vertex 1 - Red
        {1.0f, 1.0f, -1.0f, D3DCOLOR_XRGB(211, 0, 0),}, //Vertex 2 - Red
        {1.0f, 1.0f, 1.0f, D3DCOLOR_XRGB(0, 211, 0),}, //Vertex 3 - Green

        //Face 1 正对我们的一个面 2个三角形
        {-1.0f, -1.0f, -1.0f, D3DCOLOR_XRGB(211, 0, 0),}, //Vertex 4 - Red
        {-1.0f, 1.0f, -1.0f, D3DCOLOR_XRGB(0, 0, 211),}, //Vertex 1 - Blue
        {1.0f, -1.0f, -1.0f, D3DCOLOR_XRGB(0, 211, 0),}, //Vertex 6 - Green
        {1.0f, 1.0f, -1.0f, D3DCOLOR_XRGB(211, 0, 0),}, //Vertex 7 - Red

        //Face 2 侧面三角形
        {1.0f, -1.0f, 1.0f, D3DCOLOR_XRGB(0, 0, 211),}, //Vertex 8 - Blue
        {1.0f, 1.0f, 1.0f, D3DCOLOR_XRGB(0, 211, 0),}, //Vertex 9 - Green
        
        //Face 3 侧面三角形
        {-1.0f, -1.0f, 1.0f, D3DCOLOR_XRGB(0, 211, 0),}, //Vertex 10 - Green
        {-1.0f, 1.0f, 1.0f, D3DCOLOR_XRGB(211, 0, 0),}, //Vertex 11 - Red

        //Face 4 侧面三角形
        {-1.0f, -1.0f, -1.0f, D3DCOLOR_XRGB(211, 0, 0),}, //Vertex 12 - Red
        {-1.0f, 1.0f, -1.0f, D3DCOLOR_XRGB(0, 0, 211),}, //Vertex 13 - Blue

        //Bottom Face  底部 2个三角形
        {1.0f, -1.0f, -1.0f, D3DCOLOR_XRGB(0, 211, 0),}, //Vertex 14 - Green
        {1.0f, -1.0f, 1.0f, D3DCOLOR_XRGB(0, 0, 211),}, //Vertex 11 - Blue
        {-1.0f, -1.0f, -1.0f, D3DCOLOR_XRGB(211, 0, 0),}, //Vertex 16 - Red
        {-1.0f, -1.0f, 1.0f, D3DCOLOR_XRGB(0, 211, 0),}, //Vertex 17 - Green
    };

但下面用与生成立体矩形的时候三角形的顶点排列就不明白了
{-1.0f, 1.0f, -1.0f, D3DCOLOR_XRGB(0, 0, 255),}, //Vertex 0 - Blue
{-1.0f, 1.0f, 1.0f, D3DCOLOR_XRGB(255, 0, 0),}, //Vertex 1 - Red
{1.0f, 1.0f, -1.0f, D3DCOLOR_XRGB(255, 0, 0),}, //Vertex 2 - Red
这个顶点信息构成一个三角形
1|
  |  
0|___2
按教程里说的这是一个顺时针顶点排列的
我不明白顶点0 为什么是-1.0,1.0,-1.0

哪位大哥帮帮可怜的出血者啊 :)

22

主题

92

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2006-2-19 00:52:00 | 显示全部楼层

Re: 请问 这个三角形是怎么生成的?

没错呀,根据D3D左手坐标系原则,顶点0就是-1,1,-1

22

主题

69

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2006-2-19 19:12:00 | 显示全部楼层

Re:请问 这个三角形是怎么生成的?

我是这样理解的:从计算机屏幕前看过去,判断是顺时针还是逆时针的。上面的:
点1

点0     点2
排列顺序符合顺时针方向,而DX默认剔除逆时针排列的三角形,所以当这三点转到背离计算机屏幕时,就看不到了。

0

主题

6

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2006-2-20 13:38:00 | 显示全部楼层

Re:请问 这个三角形是怎么生成的?

对于Triangle Strip类型,D3D是按照0-1-2, 1-3-2这样的顺序渲染的,按照上图的排列,它们是顺时针的。明白了吗?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 11:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表