游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2180|回复: 4

为什么把mesh的索引缓存增加到32位后会蓝屏?

[复制链接]

3

主题

30

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2009-10-2 10:32:00 | 显示全部楼层 |阅读模式
16位下,每个mesh最多只能定义的那64K个索引不够用,就把D3DXCreateMeshFVF函数的第三个参数设为D3DXMESH_32BIT,可为何将mesh的索引缓存增加到32位后,程序运行后该mesh无法显示(16位的索引下正常),摄像机再拉远点就会出现蓝屏死机?是不是这个设定对显卡有什么要求,而我的机器不支持呢?

34

主题

443

帖子

478

积分

中级会员

Rank: 3Rank: 3

积分
478
发表于 2009-10-2 11:42:00 | 显示全部楼层

Re:为什么把mesh的索引缓存增加到32位后会蓝屏?

LZ提到我了

45

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2009-10-2 12:23:00 | 显示全部楼层

Re:为什么把mesh的索引缓存增加到32位后会蓝屏?

其实不是你拉远了摄像机才蓝屏的,是Mesh索引创建还没完成。在D3D DeviceCaps下看看你的显卡支持32位的索引否?如果不支持,那肯定就不能用了,如果支持的话,那肯定是其他地方出错了。

3

主题

30

帖子

34

积分

注册会员

Rank: 2

积分
34
 楼主| 发表于 2009-10-2 13:21:00 | 显示全部楼层

Re:为什么把mesh的索引缓存增加到32位后会蓝屏?

        IDirect3D9* d3d9 = Direct3DCreate9(D3D_SDK_VERSION);
        if(d3d9)
        {
                D3DCAPS9 caps;
                d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps);
                cout<<"最大索引缓存:"<<caps.MaxVertexIndex<<endl;
        }
  查了一下,我的机器支持的最大索引值是16M,即24位的,那我D3DXCreateMeshFVF函数的第三个参数用哪个呢?它好象只能用16位或32位这两种,难道没办法了么?
  之前,我用这个方法想知道我的显卡支持的最大光源数MaxActiveLights,结果显示为0,再烂的显卡也不可能不支持光源的吧,所以,以后我就不太相信这个GetDeviceCaps了!
  请大家指点一下吧!

1

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2009-10-2 15:35:00 | 显示全部楼层

Re:为什么把mesh的索引缓存增加到32位后会蓝屏?

我理解成windows的那个蓝屏了(我承认我在灌水)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 08:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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