首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >构建Cg程序的正确方法是什么?

构建Cg程序的正确方法是什么?
EN

Stack Overflow用户
提问于 2012-10-30 01:00:36
回答 1查看 219关注 0票数 3

This tutorial使用显式OUT结构,例如:

代码语言:javascript
复制
struct C3E1v_Output {
  float4 position : POSITION;
  float4 color    : COLOR;
};

C3E1v_Output C3E1v_anyColor(float2 position : POSITION,
                            uniform float4 constantColor)
{
  C3E1v_Output OUT;
  OUT.position = float4(position, 0, 1);
  OUT.color = constantColor;  // Some RGBA color
  return OUT;
}

但是看看我的一个着色器,我有明确的输入/输出参数:

代码语言:javascript
复制
float4 slice_vp(
        // Vertex Inputs
        in float4 position        : POSITION,    // Vertex position in model space
      out float4 oposition : POSITION,
        // Model Level Inputs
        uniform float4x4 worldViewProj) : TEXCOORD6
{
    // Calculate output position
    float4 p = mul(worldViewProj, position);
    oposition=p;
    return p;
}

我在使用HLSL2GLSL时遇到了一些问题,我想知道是不是我的Cg格式有问题(尽管它作为Cg脚本工作得很好)。有没有一种“正确”的方法,或者这两种方法只是通向同一目的的不同方法?

EN

回答 1

Stack Overflow用户

发布于 2012-12-05 08:13:20

正如您所看到的,这两种方法都有效。但是,我强烈建议使用结构--尤其是顶点着色器的输出(片段着色器的输入)。原因与其说是机器喜欢什么(它并不关心),不如说是创建可以在项目和人员之间安全重用和共享的代码。您希望查找和调试的最后一件事是这样一种情况:一个程序员在某些情况下为TEXCOORD1赋值,而在另一些情况下试图从TEXCOORD2中读取该值。或寄存器不匹配的任何排列。使用structs,你的生活会更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13126250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档