游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1443|回复: 1

使用shademode的gouraud来显示正方体时变全黑色的问题

[复制链接]

1

主题

2

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2010-5-4 09:24:00 | 显示全部楼层 |阅读模式
刚接触Direct3D,不理解颜色的使用。
我是按照龙书的写法显示一个正方体的,使用8个顶点,36个索引

顶点结构如下:
struct ColorVertex
{
        ColorVertex(){}
        ColorVertex(float x, float y, float z, D3DCOLOR color)
        {
                _x = x;
                _y = y;
                _z = z;
                _color = color;
        }

        float _x, _y, _z;
        D3DCOLOR _color;
        static const DWORD FVF;
};

const DWORD ColorVertex::FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE;

如下创建8个顶点和36个索引。
          Device->CreateVertexBuffer(
                8 * sizeof(ColorVertex),
                D3DUSAGE_WRITEONLY,
                ColorVertex::FVF,
                D3DPOOL_MANAGED,
                &VB,
                0);

        Device->CreateIndexBuffer(
                36 * sizeof(WORD),
                D3DUSAGE_WRITEONLY,
                D3DFMT_INDEX16,
                D3DPOOL_MANAGED,
                &IB,
                0);

如下显示
                Device->SetStreamSource(0, VB, 0, sizeof(ColorVertex));
                Device->SetIndices(IB);
                Device->SetFVF(ColorVertex::FVF);

                // Draw cube.
                Device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
                Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 8, 0, 12);

采用fillmode的wireframe模式显示是正确的。但采用shademode的gouraud时
最终显示的正方体是全黑的。我想知道为什么。难道是采用索引顶点缓存的问题? [em5]

1

主题

2

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2010-5-4 11:13:00 | 显示全部楼层

Re:使用shademode的gouraud来显示正方体时变全黑色的问题

自己搞定了··
原来是因为directX里灯光是默认打开的。而原正方体没有材质,所以将光全部吸收了。也就变黑了。
将灯光关了就可以了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 19:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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