在OpenGL中,顶点着色器的输出是如何传递到片段着色器的?

在OpenGL中,顶点着色器的输出是如何传递到片段着色器的?

我正在学习OpenGL,基本已理解管线原理,但是有一个问题一直没明白:我们知道顶点着色器可以传递变量到片段着色器,然而片段着色器和顶点着色器并不是1:1调用的。比如一个三角形有三个顶点,调用三次顶点着色器,三角形光栅话后会有很多的片段(插值的结果),每个片段都会调用一次片段着色器。那么问题来了,片段着色器的输入到底是处理哪个顶点时的输出呢?片段是图元光栅化的结果,为何只关联到某一个顶点(正确吗?),就近原则?
在下面链接有个类似的问题,但是还是没明白。
opengl - How are vertex shader outs sent as inputs to the fragment shader?
还有一个关于光栅化插值方法的Blog: 光栅化插值方法

如果上面没有描述清楚,换一种问法:现在,三个顶点依次调用依次vertex shader(调用3次),我们在vertex shader里输出顶点的坐标给fragement shader用,变量名为vex_coord。由于生成的片段远多余三个(比如30个),30个片段要调用30次fragement shader,那们调用片段0,1,2,3...29时,vex_coord值分别是什么呢?上面的vex_coord到底会有多少种值,3个(即图元顶点)还是30个(即每个片段对应到三维空间上的点)或其他?
关于Shader的调用次数:
Vertex Shader
Number of invocation of vertex shader?
How many times shader executes?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值