游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2088|回复: 5

vertex shader的一个问题!

[复制链接]

2

主题

6

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2004-4-10 10:31:00 | 显示全部楼层 |阅读模式
最近学dx9的vertex shader时,遇到了点麻烦,在看帮助文件时遇到了困惑。
Step 2: Design the Shader Functionality
This shader applies a constant color to each vertex. The shader file VertexShader.vsh follows:

vs_1_1              // version instruction
dcl_position v0     // define position data in register v0
m4x4 oPos, v0, c0   // transform vertices by view/projection matrix
mov oD0, c4         // load constant color

Step 5: Create the Shader
The shader is assembled and created next.

LPDIRECT3DPIXELSHADER9 m_pVertexShader;
TCHAR        strShaderPath[512];
LPD3DXBUFFER pCode;                  // Buffer with the assembled shader code
LPD3DXBUFFER pErrorMsgs;             // Buffer with error messages
DXUtil_FindMediaFileCb( strShaderPath, sizeof(strShaderPath),
                        _T("VertexShader.vsh") );

帮助提示在建立一个shader时,要建立一个名为VertexShader.vsh的文件,内容为step2中的内容。而我在看dxsdk中自带的vertexshader例子,却没有找到类似的文件,还请高手指点!

3

主题

86

帖子

94

积分

注册会员

Rank: 2

积分
94
QQ
发表于 2004-4-10 11:51:00 | 显示全部楼层

Re:vertex shader的一个问题!

DXUtil_FindMediaFileCb( strShaderPath, sizeof(strShaderPath),
                        _T("VertexShader.vsh") );

这句不是有个"VertexShader.vsh"吗?

6

主题

390

帖子

400

积分

中级会员

Rank: 3Rank: 3

积分
400
发表于 2004-4-10 12:49:00 | 显示全部楼层

Re:vertex shader的一个问题!

DXUtil_FindMediaFileCb会在当前目录和../Media目录下寻找文件,自己看吧

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2004-4-10 16:29:00 | 显示全部楼层

Re:vertex shader的一个问题!

楼上的说得很清楚,我也在vs上费了很多时间,sdk上有很多地方都没有讲清楚,除了用
DXUtil_FindMediaFileCb之外还可以用       
const char strVertexShader[] =
"vs_1_0                             //Shader version 1.0 \n"\
"dcl_position     v0         //combine v0 to position\n"\
"dcl_color0         v5         //combine v5 to color0 \n"\
"m4x4     oPos , v0   , c0         //emit   position \n"\
"mov     oD0    , v5                //Diffuse color = vertex color  \n";
if( FAILED(D3DXAssembleShader( strVertexShader,sizeof(strVertexShader)-1, NULL, NULL, 0, &pCode, NULL )))
return E_FAIL;
if( FAILED(g_pd3dDevice->CreateVertexShader( (DWORD*)pCode->GetBufferPointer(),
&m_pVertexShader )))
return E_FAIL;
pCode->Release();
这种方式,具体可以看一下我发的贴子“dx9里的vsh问题”,有几个,是哪个我忘了,完整代码。其实也是我问的问题。在此建议楼主一定要弄清楚vs代码里的意思。
再次请高手解决一下“vs怪现象。(图)”的问题。

0

主题

19

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2004-4-10 20:17:00 | 显示全部楼层

Re:vertex shader的一个问题!

dxutil.cpp中,DXUtil_FindMediaFile会在当前目录下,或者sdk的media目录下找。这里需要一个注册表项,如果你的sdk是copy的或者sdk目录移动过了,就不对了。

你要么修改DXUtil_GetDXSDKMediaPath,要么修改注册表
RegOpenKeyEx(
    HKEY_LOCAL_MACHINE,  
    _T("Software\\Microsoft\\DirectX SDK")
)

对于8.1
RegQueryValueEx( hKey, _T("DX81SDK Samples Path") ....

2

主题

6

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2004-4-12 16:37:00 | 显示全部楼层

Re:vertex shader的一个问题!

我已经找到了!
最近有点迟钝,这么点小问题也来麻烦大家。
见笑了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-29 22:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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