游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3648|回复: 11

一个D3D做的金子塔,希望初学者能思考如何做的。

[复制链接]

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
发表于 2005-10-18 18:36:00 | 显示全部楼层 |阅读模式
一个金字塔。

键盘控制
x - 绕 x轴旋转
y - 绕 y轴旋转
z - 绕 z轴旋转
ESC 退出

这是个Dx8接口的,看过Dx9SDK你完全可以 把Dx9的例子修改了。

sf_2005101818362.exe

232 KB, 下载次数:

3

主题

105

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2005-10-19 00:30:00 | 显示全部楼层

Re:一个D3D做的金子塔,希望初学者能思考如何做的。

    我感觉是 设置了diffuse 颜色  然后根据时间来  切换光照的开关~

182

主题

445

帖子

459

积分

中级会员

Rank: 3Rank: 3

积分
459
QQ
发表于 2005-10-19 12:58:00 | 显示全部楼层

Re:一个D3D做的金子塔,希望初学者能思考如何做的。

什么玩意?

5

主题

217

帖子

222

积分

中级会员

Rank: 3Rank: 3

积分
222
发表于 2005-10-19 14:10:00 | 显示全部楼层

Re:一个D3D做的金子塔,希望初学者能思考如何做的。

我靠...垃圾啊
这种东西也发上来现眼?
1.用单色 + 环境光开关可以实现
2.用两色切换实现
3.用两套数据实现
4.....
5....
.........
另外,这种垃圾不要发上来了吧,真是丢啊

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
 楼主| 发表于 2005-10-19 15:40:00 | 显示全部楼层

Re:一个D3D做的金子塔,希望初学者能思考如何做的。

也许 你真的 认为 这是垃圾,但是对于 连DirectX是什么都不知道的初学者,他们看到金字塔也很高兴的, 你有比这更好的东西 那你就发上来吧,这样能 引起 大家的注意和竞争,人家看到你的东西好,就会思考 如何做的,这样 的学习效果很好。

就是 手工的一个个三角形拼出来的,如果 用Max就不用手工了。
另外打了个 光而已,用的是扩散光 二 楼的说对了。
附件中是代码
http://srggame.cosoft.org.cn/Pyramid.rar

1

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2005-10-19 19:18:00 | 显示全部楼层

Re: 一个D3D做的金子塔,希望初学者能思考如何做的。

    如此文章,若能在其中点评一下程式的关键之处就更好了。
    赞...

3

主题

105

帖子

105

积分

注册会员

Rank: 2

积分
105
发表于 2005-10-19 23:22:00 | 显示全部楼层

Re:一个D3D做的金子塔,希望初学者能思考如何做的。

    3楼的有点激进哦, 来这里的人水平参次不齐,水平高的话也没必要说这样的话。 我很赞赏楼主这样的方法, 以引导的方式让人对编程和掌握知识感兴趣, 如果你循序渐进的 话就更好了

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-10-20 15:48:00 | 显示全部楼层

Re:一个D3D做的金子塔,希望初学者能思考如何做的。

至少说明知道怎么用DX的管线渲染了。

125

主题

364

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
QQ
 楼主| 发表于 2005-10-20 20:55:00 | 显示全部楼层

Re:一个D3D做的金子塔,希望初学者能思考如何做的。

程序中 CUSTOMVERTEX modelDef[]这个 全局数组定义了金子塔的面。
因为 只有五个面。所以 5个顶点就搞定。

这个WORD indices[] 则 负责如何连接各个顶点

函数HRESULT InitGeometry()是个自定义的函数,这里主要负责绘制几何图形,如果不用手工绘制则 也在这里处理Mesh

关键的地方是这段
g_pd3dDevice->CreateIndexBuffer(        sizeof(WORD) * num_elems,
                                                                                D3DUSAGE_WRITEONLY,
                                                                                D3DFMT_INDEX16,
                                                                                D3DPOOL_DEFAULT,
                                                                                &pIndexBuffer        );

        WORD *pIndex;
    pIndexBuffer->Lock(0, 0, (BYTE **)&pIndex, 0);
        for(idx = 0; idx < num_elems; idx++){
                pIndex[idx] = indices[idx];
        }
        pIndexBuffer->Unlock();

        g_pd3dDevice->SetIndices(pIndexBuffer, 0);
通过创建一个索引缓冲区来 设置索引,只有这样设置了,才能让前面的 indices发挥作用。

当我们会了读取Mesh后就不必这样费劲的手工连接了。

3

主题

159

帖子

159

积分

注册会员

Rank: 2

积分
159
发表于 2005-10-20 21:32:00 | 显示全部楼层

Re:一个D3D做的金子塔,希望初学者能思考如何做的。

支持楼主,鄙视说话不明白的家伙
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 08:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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