游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3809|回复: 12

关于HLSL中 uniform 的问题

[复制链接]

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
发表于 2006-4-9 12:19:00 | 显示全部楼层 |阅读模式
我写了一个Effect,框架如下:

  1. //一种运动方式,返回一个偏移量
  2. float4 Move_1(float4 pos)
  3. {
  4.         return float4(……略)
  5. }

  6. //另一种运动方式,返回一个偏移量
  7. float4 Move_2(float4 pos)
  8. {
  9.         return float4(……略)
  10. }

  11. //vertex shader output structs
  12. struct VS_OUTPUT
  13. {
  14.         float4 Pos        : POSITION;
  15.         float4 Diff        : COLOR0;
  16.         float2 Text        : TEXCOORD0;
  17. };

  18. VS_OUTPUT VS(
  19.         float4 InPos         : POSITION,
  20.         float3 InNormal         : NORMAL,
  21.         float2 InTexture : TEXCOORD0,
  22.         uniform int part)
  23. {
  24.         VS_OUTPUT Out = (VS_OUTPUT)0;
  25.        
  26.         float4 pos;
  27.        
  28.         //********
  29.         //想根据part参数的不同应用不同的运动方式
  30.         if( 0 == part )
  31.         {
  32.                 pos = InPos + Move_1(InPos);
  33.         }
  34.         else if( 1 == part )
  35.         {
  36.                 pos = InPos + Move_2(InPos);
  37.         }
  38.        
  39.         //以下可以不看
  40.         float4x4 matViewProj = mul(g_View, g_Projection);
  41.         float4x4 matTransform= mul(g_Transformation, matViewProj);
  42.         float4x4 matPos = mul(g_World, matTransform);
  43.    
  44.     Out.Pos = mul(pos, matPos);
  45.     Out.Diff.xyz = g_Ambient;
  46.     Out.Diff.z = 1.0f;
  47.     Out.Text = InTexture;
  48.    
  49.     return Out;
  50. }


  51. technique Render_body
  52. {
  53.         pass P0
  54.         {
  55.                 VertexShader = compile vs_1_1 VS(0);
  56.         }
  57. }

  58. technique Render_weiqi
  59. {
  60.         pass P0
  61.         {
  62.                 VertexShader = compile vs_1_1 VS(1);
  63.         }
  64. }
复制代码


我的目的是调用Render_body是让body以Move_1方式运动,调用Render_weiqi让weiqi以另一种方式运动,可是现在的效果是都是以Move_1方式运动
不知道为什么,大侠帮我看看,我想可能与 uniform 有关吧 [em24]

0

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2006-4-9 12:31:00 | 显示全部楼层

找人破解外挂.

我想找您帮我破解外挂.
利润分红.
QQ258246029 [em10] [em10] [em7] [em7] [em5] [em5] [em24] [em24]

4

主题

43

帖子

43

积分

注册会员

Rank: 2

积分
43
发表于 2006-4-9 17:24:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

把代码发上来看看啊
我觉得 在应用程序中 是不是用不同的技术 渲染了 不同的顶点流?

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-4-9 18:40:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

代码太多了,
我判断当前顶点属于那个部分,如果是body的话就使用Render_body
如果是weiqi就Render_weiqi,但是
technique Render_weiqi{
pass P0        {
        VertexShader = compile vs_1_1 VS(1);       
               }
}
那个 1 好像没起作用

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-4-10 09:55:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

1.1似乎不支持分支吧。

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-4-10 11:29:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

我用2.0也不行

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-4-10 19:18:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

我将part作为全局变量,然后在程序中给它赋值,就OK了

看来还是uniform使用的有问题

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-4-10 23:12:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

我说错了,1.1是支持的,可以换成bool试一下。

25

主题

134

帖子

134

积分

注册会员

Rank: 2

积分
134
 楼主| 发表于 2006-4-11 08:59:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

为了使代码简短,我只写了2个运动函数,其实有很多部分,没部分使用的函数都不同,所以bool不行吧

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-4-11 10:01:00 | 显示全部楼层

Re:关于HLSL中 uniform 的问题

调试一下,看看值是多少。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 04:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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