游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2314|回复: 6

[求助]这个Cg顶点程序到底有什么问题啊?我只是想旋转下

[复制链接]

11

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2007-4-22 13:44:00 | 显示全部楼层 |阅读模式
加上Cg后一直都是黑屏,请指点偶一下,不明白啊不明白。。。[em24]

struct appdata
{
        float4 position : POSITION;
        float4 color    : COLOR;
};

appdata main(appdata IN,
                         uniform float twisting,
                         uniform float4x4 ModelViewProj)
{
        appdata OUT;
        float angle = twisting * length(IN.position);
        float cosLength, sinLength;
        sincos(angle, sinLength, cosLength);

        OUT.position[0] = cosLength * IN.position[0] - sinLength * IN.position[1];
        OUT.position[1] = sinLength * IN.position[0] + cosLength * IN.position[1];

        OUT.position = mul(ModelViewProj, OUT.position);
        OUT.color    = float4(0, 1, 0, 1);
       
        return OUT;       
}

11

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2007-4-22 18:00:00 | 显示全部楼层

Re: [求助]这个Cg顶点程序到底有什么问题啊?我只是想旋

我把传入的矩阵参数去掉了,但是当旋转系数twisting = 2.9得到的是这样的图,为什么和书上不一样呢?程序就是Cg那本教程上的啊。
sf_2007422175953.jpg

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-4-23 21:13:00 | 显示全部楼层

Re:[求助]这个Cg顶点程序到底有什么问题啊?我只是想旋

OUT.position[0] = cosLength * IN.position[0] - sinLength * IN.position[1];
OUT.position[1] = sinLength * IN.position[0] + cosLength * IN.position[1];

OUT.position = mul(ModelViewProj, OUT.position);


把上面两句,和最后一句对换下吧?
应该旋转投影后的坐标吧?

我的猜想。

11

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2007-4-24 23:22:00 | 显示全部楼层

Re: Re:[求助]这个Cg顶点程序到底有什么问题啊?我只是想

Devil: Re:[求助]这个Cg顶点程序到底有什么问题啊?我只是想旋转下顶点,但一直是黑屏

OUT.position[0] = cosLength * IN.position[0] - sinLength * IN.position[1];
OUT.position[1] = sinLen...


改好了,顺序确实有影响,但是OUT.position = mul(MVM,OUT.position)这样的表达式好像是不正确的...Cg语言有什么规定么?

32

主题

1259

帖子

1351

积分

金牌会员

Rank: 6Rank: 6

积分
1351
发表于 2007-4-25 13:30:00 | 显示全部楼层

Re:[求助]这个Cg顶点程序到底有什么问题啊?我只是想旋

点 (乘以) 矩阵 = 点

24

主题

256

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2007-4-25 23:25:00 | 显示全部楼层

Re:[求助]这个Cg顶点程序到底有什么问题啊?我只是想旋

可能与你的视景台定义有关。




-----------------------------
www.physdev.com

11

主题

26

帖子

26

积分

注册会员

Rank: 2

积分
26
 楼主| 发表于 2007-4-26 01:25:00 | 显示全部楼层

Re: Re:[求助]这个Cg顶点程序到底有什么问题啊?我只是想

Devil: Re:[求助]这个Cg顶点程序到底有什么问题啊?我只是想旋转下顶点,但一直是黑屏

点 (乘以) 矩阵 = 点


似乎应该是这个道理,但是反过来试了下,结果是一样的图。
就是OUT.position = mul(ModelViewProj, IN.position);
  和OUT.position = mul(IN.position, ModelViewProj);是一样的。



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

本版积分规则

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

GMT+8, 2026-1-26 16:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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