游戏开发论坛

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

关于HLSL的参数问题

[复制链接]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2006-3-5 18:52:00 | 显示全部楼层 |阅读模式
我在D3D中声明了一个顶点格式为

struct vertex
{
float x,y,z,w;
float u,v;
};

并以下面的声明在D3D中定义了它
D3DVERTEXELEMENT9 decl[] =
{
{0,  0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{0, 16, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
D3DDECL_END()
};

在渲染前已经在VB中写入了值,并设定了流及纹理。但是在HLSL的入口函数中却取不到UV的纹理的值。
入口函数如下:

struct VS_OUTPUT
{
    float4 Position   : POSITION;   // vertex position
    float4 Diffuse    : COLOR0;     // vertex diffuse color
    float2 uv : TEXCOORD0;
};

VS_OUTPUT main( in float4 pos : POSITION, in float2 UV : TEXCOORD0)
{
        VS_OUTPUT Output;

        Output.Position = mul(pos, ViewProjMatrix);
       
        Output.Diffuse = co;
       
        Output.uv = UV;
       
    return Output;
}

想问一下,是什么原因导致了这样的情况,因为POSITION的值是正确的传入到VS中了的,但TEXCOORD0却没有传入。
[em7]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
 楼主| 发表于 2006-3-5 20:56:00 | 显示全部楼层

Re:关于HLSL的参数问题

好吧,自己解决了。

原因是之前的SHADER中没有使用到UV这个参数,编译SHADER时被优化掉了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 19:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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