使用HLSL进行帧旋转

问题描述 投票:1回答:1

我们有一些媒体处理应用程序,我们需要能够旋转框架。我们使用GPU。HLSL中有Vertex Shader,其代码如下:

struct VS_INPUT
{
    float4 Pos : POSITION;
    float2 Tex : TEXCOORD;
    uint   TexIdx : TEXINDEX;
};

struct VS_OUTPUT
{
    float4 Pos : SV_POSITION;
    float2 Tex : TEXCOORD;
    uint   TexIdx : TEXINDEX;
};

VS_OUTPUT VS(VS_INPUT input)
{
   VS_OUTPUT output;
   float2 pos_rotate = input.Pos.xy;
   float rads = radians(45);
   float cFlare = cos(rads);
   float sFlare = sin(rads);
   output.Pos = input.Pos;
   output.Pos.xy = mul(pos_rotate, float2x2(cFlare, -sFlare, sFlare, cFlare));

   output.Tex = input.Tex;
   output.TexIdx = input.TexIdx;
   return output;
};

所以,据我所知,sincos以弧度表示角度。radians以度为单位获取角度。但是,正如我们所看到的,框架旋转到90°而不是45°。

frame

c++ hlsl
1个回答
0
投票

ОК,C ++代码中的问题,在其他调用堆栈中,框架按预期旋转。但是现在很难提供C ++代码...我想,我将把框架放在正确的调用堆栈中。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.