8.3 入口函数

文章内容源自《GPU编程与CG语言之阳春白雪下里巴人》,因笔者读书易中途放弃,遂每读一章节,将其移至简书平台,以此作为对自己读书的勉励。笔者用粗体斜体 标注了关键词句,望感兴趣的读者们一起学习共勉。猛戳这里查看更多!

8.3 入口函数

所谓入口函数,即一个程序执行的入口,例如 C\C++程序中的 main()函数。

通常高级语言程序中只有一个入口函数,不过由于着色程序分为顶点程序片断程序,两者对应着图形流水线上的不同阶段,所以这两个程序都各有一个入口函数。

顶点程序和片段程序有且只有一个入口函数,当程序进行编译时,需要指定入口函数名称(参阅 4.4 节 CG 编译),除非入口函数名为 main。当我们编写或阅读 Cg 代码时,如何区分哪个函数是入口函数呢?或者哪个入口函数对应着顶点程序或片段程序?事实上,顶点程序和片段程序的入口函数形式,已经完全由它们在渲染管线中所处的阶段所决定。在前面已经阐述过,顶点程序接收应用程序传递的顶点数据(通常位于模型坐标空间),然后进行坐标空间转换和光照处理,后输出投影坐标和计算得到的光照颜色;而片段程序接收从顶点程序输出的数据,并进行像素颜色计算。在片段程序中往往涉及到纹理颜色的处理,其输入参数中常有纹理形参的声明。所以通过观察程序的输入输出语义绑定(参阅 7.5 节语义词与语义绑定),就可以区分入口函数对应到顶点程序还是片段程序。而内部函数则忽略任何应用到形参上的语义,通常也没有人会在内部函数使用语义词,除非他\她的目的是练习打字速度。

下面的代码展示了一个顶点程序的入口函数,名称为 C2E1v_green,这个顶点着色程序接收二维顶点数据,然后转换为齐次坐标(请思考,顶点和向量的齐次坐标有什么不同?齐次坐标的本质是什么?),并将该顶点设置为绿色,最后使用 return 语句输出。如果电脑安装了 Cg,该程序文件位于“NVIDIA Corporation\Cg\examples\OpenGL\basic\ 01_vertex_program\C2E1v_green.cg”目录下。

struct C2E1v_Output {
    float4 position : POSITION;
    float3 color    : COLOR;
}; 
 
C2E1v_Output C2E1v_green(float2 position : POSITION)
{
    C2E1v_Output OUT; 
    OUT.position = float4(position,0,1);
    OUT.color = float3(0,1,0);
    return OUT;
} 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习AI算法工程

从互联网巨头数据挖掘类招聘笔试题目看我们还差多少

1 从阿里数据分析师笔试看职业要求 以下试题是来自阿里巴巴招募实习生的一次笔试题,从笔试题的几个要求我们一起来看看数据分析的职业要求。 一、异常值是指什么?请列...

40470
来自专栏生信宝典

R语言学习 - 箱线图(小提琴图、抖动图、区域散点图)

箱线图 箱线图是能同时反映数据统计量和整体分布,又很漂亮的展示图。在2014年的Nature Method上有2篇Correspondence论述了使用箱线图的...

1.1K100
来自专栏一棹烟波

3DLut表实现log视频的后期调色原理

现在越来越多的视频或者图像拍摄设备支持log模式,比如大疆无人机的D-Log模式等等,log模式的起源和发展就不多做介绍,其在普通显示器上显示画面通常看起来是平...

41220
来自专栏冰霜之地

Google S2 是如何解决空间覆盖最优解问题的?

这篇不出意外就是 Google S2 整个系列的最终篇了。这篇里面会把 regionCoverer 算法都讲解清楚。至于 Google S2 库里面还有很多其他...

44530
来自专栏瓜大三哥

Caffe、TensorFlow、MXnet

Caffe已经很久没有更新过了,曾经的霸主地位果然还是被tensorflow给终结了,特别是从0.8版本开始,tensorflow开始支持分布式,一声叹息…MX...

44390
来自专栏蜉蝣禅修之道

CMU算法求网络瓶颈链路

19560
来自专栏Python小屋

三种Fibonacci数列第n项计算方法及其优劣分析

感谢国防科技大学刘万伟老师和中国传媒大学胡凤国两位老师提供的思路,文章作者不能超过8个字符,我的名字就写个姓吧,名字不写了^_^。另外,除了本文讨论的三种方法,...

35170
来自专栏算法+

快速双边滤波 附完整C代码

很早之前写过《双边滤波算法的简易实现bilateralFilter》。 当时学习参考的代码来自cuda的样例。 相关代码可以参阅: https://github...

1.7K100
来自专栏WindCoder

四则运算、幸福来敲门、求一次方程解ax+b=0

/* 功能:四则运算 日期:2013-03-16 */ #include<stdio.h> #include<stdlib.h>

7910
来自专栏数据小魔方

左手用R右手Python——CSS网页解析实战

之前我陆陆续续写了几篇介绍在网页抓取中CSS和XPath解析工具的用法,以及实战应用,今天这一篇作为系列的一个小结,主要分享使用R语言中Rvest工具和Pyth...

47350

扫码关注云+社区

领取腾讯云代金券