游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4164|回复: 13

求助, 关于VertexShader

[复制链接]

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2007-3-20 15:19:00 | 显示全部楼层 |阅读模式
小弟刚开始学VS/PS,遇到一点问题.
D3D Code ------------------------------------------------------
class CShadeTest
{
............
IDirect3DVertexShader9* _pDiffShader;
ID3DXConstantTable*                _pDiffConstTable;
...........
}
..........
HRESULT hr = D3DXCompileShaderFromFile( "Shade.txt", NULL, NULL, "Main", "vs_1_1", D3DXSHADER_DEBUG, &pBfShader, &pBfError, &_pDiffConstTable );
_lpD3DDevice->CreateVertexShader( (DWORD*)pBfShader->GetBufferPointer(), &_pDiffShader );
..........
if( FAILED(_pDiffConstTable->SetMatrix( pDevice, "mtrProj", &mtrProj )))
MessageBox( g_hWnd, "Set mtrProj Failed!!!", __FILE__, NULL );
if( FAILED(_pDiffConstTable->SetMatrix( pDevice, "mtrView", &mtrEye )))
MessageBox( g_hWnd, "Set mtrView Failed!!!", __FILE__, NULL );
.............
Shade.txt -------------------------------------------------------
extern matrix mtrProj;
extern matrix mtrView;

struct VS_INPUT
{
        vector pos    : POSITION;
        vector diff   : COLOR;
};

struct VS_OUTPUT
{
        vector pos    : POSITION;
        vector diff   : COLOR;
};

VS_OUTPUT Main( VS_INPUT input )
{
        VS_OUTPUT output = (VS_OUTPUT)0;

        ..............
       
        return output;
}

以上为主要代码, 执行_pDiffConstTable->SetMatrix( pDevice, "mtrView", &mtrEye )每次都失败....不知道是何原因, 哪位朋友能帮帮忙啊...谢谢

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2007-3-21 14:53:00 | 显示全部楼层

Re:求助, 关于VertexShader

哪位有帮忙啊, THX THX~~!!

23

主题

112

帖子

870

积分

高级会员

Rank: 4

积分
870
QQ
发表于 2007-3-22 00:08:00 | 显示全部楼层

Re:求助, 关于VertexShader

把 出错提示 贴出来下;

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2007-3-22 00:50:00 | 显示全部楼层

Re:求助, 关于VertexShader

没有出错提示啊, 只是FAILED(_pDiffConstTable->SetMatrix( pDevice, "mtrProj", &mtrProj )每次都是TRUE,.....望指教

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2007-3-22 21:50:00 | 显示全部楼层

Re:求助, 关于VertexShader

用 D3DXHANDLE hMtrProj = _pDiffConstTable->GetConstantByName( NULL, "mtrProj" ) 得到的hMtrProj每次都是NULL的, 这是为什么啊?.....看了一些资料基本都用的是类似的方法,可是我没法实现, ....

1

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-3-23 14:16:00 | 显示全部楼层

Re:求助, 关于VertexShader

if( FAILED(_pDiffConstTable->SetMatrix( pDevice, "mtrView", &mtrEye ))) ??????

1

主题

20

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-3-23 14:18:00 | 显示全部楼层

Re:求助, 关于VertexShader

if( FAILED(_pDiffConstTable->SetMatrix( pDevice, "mtrView", &mtrEye )))
肯定错撒  参数你都传错了! 第二个是 mtrVIew 的 HANDLE 你传 个字符串指针不错就怪了.

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2007-3-24 02:29:00 | 显示全部楼层

Re:求助, 关于VertexShader

我看了一些资料, 有些是SetMatrix( device, d3dxhandle, *d3dxmatrix ), 有些就像我上面那样用, 我看了DX SDK中的例子, 似乎也是这样用的, 虽然他用的是EFFECT, 我也试了用D3DXHANDLE hMtrProj = _pDiffConstTable->GetConstantByName( NULL, "mtrProj" ), 但每次得到的hMtrProj都是NULL的.....实在是找不出原因.......兄台多指点啊......不知道是不是我哪里犯了低级错误....

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2007-3-24 13:11:00 | 显示全部楼层

Re:求助, 关于VertexShader

更奇怪的是我编译了一些资料的代码, 可以通过, 一切正常, 但是我在他的VS文件中加上比如一个:
matrix TestMatrix, 然后再用D3DXHANDLE hTest = _pDiffConstTable->GetConstantByName( NULL, "TestMatrix" ), 得到的hTest就为0x00000000, 而代码中原来的其它HANDLE都正常.....实在找不出什么原因了, 有类似经验的朋友帮帮忙啊....

21

主题

112

帖子

112

积分

注册会员

Rank: 2

积分
112
 楼主| 发表于 2007-3-25 20:23:00 | 显示全部楼层

Re:求助, 关于VertexShader

Nobody?.......please......
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-4-13 00:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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