位置: 编程技术 - 正文
推荐整理分享OpenGL教程翻译 第九课 插值(opengl transform),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:opengl gltranslatef,opengl transform,opengl语言,opengl中文教程,opengl transform,opengl中文教程,opengl中文教程,opengl learning中文,内容如对您有帮助,希望把文章链接给更多的朋友!
out vec4 Color;
参数在渲染管线之间传递时必须用“out”关键字进行声明,并且必须是着色器中的全局变量。颜色是一个4-vector,因为XYZ分量(分别)携带RGB,而W是alpha(像素的透明度)。
Color = vec4(clamp(Position, 0.0, 1.0), 1.0);
在渲染管线中的颜色通常用一个在【0.0,1.0】范围内的浮点。对于每一个颜色通道(共计有M颜色),这个之后都被映射到从0到之间的整数作为一个颜色的颜色通道。我们通过一个关于顶点位置的函数来为片元设置颜色。首先我们用内置的clamp()函数来确保这些不会跑出0.0-1.0的范围。原因是三角形左下方的顶点位于-1,-1.如果我们不进行clamp()转换,那么这个就会被光栅化程序插,并且在X和Y取达到0之前我们将什么都看不见,因为每一个小于或等于0的都会被渲染为黑色。这意味着每个方向的边的一半,在颜色通过0点而变得有意义之前,将会是黑色。通过clamping,我们使仅三角形左下角的顶点为黑色,而离它越远的地方颜色很快变得越来越亮。试着玩一玩clamp函数——将他全部删除或者改变其参数查看效果。
Clamp函数的结果不直接作为输出变量,因为输出变量是一个四维向量而位置是一个三维向量(clamp不会改变分量的个数,只改变他们的)。从GLSL的观点看这里没有默认的转换,对此我们必须清楚明白。因而我们使用“vec4(vec3,W)”,它通过将三维向量和用户提供的W来创建一个四维向量。本例中我们使用1.0,因为它作为颜色的alpha部分,而且我们想要像素点是完全不透明的。
in vec4 Color;
VS的输出颜色是FS的输入颜色。这个变量通过光栅化程序进行插,所以每一个FS(可能)会获得不同的颜色。
FragColor = Color;
我们用经过插的颜色直接作为片元着色器的颜色而没有进一步的改变,本章到此结束。
视锥裁剪 转自:
[置顶] 什么是OpenGL中的深度、深度缓存、深度测试? 1)直观理解深度其实就是该象素点在3d世界中距离摄象机的距离,深度缓存中存储着每个象素点(绘制在屏幕上的)的深度!深度测试决定了是否绘制
openGL ES 2.0开发流程 一:添加必须的framework(框架)OpenGLES.frameworks和QuartzCore.framework二:修改OpenGLView.h引入OpenGl的Header,创建一些后面会用到的实例变量CAEAGLLayer*_eaglLayer;EAG
标签: opengl transform
本文链接地址:https://www.jiuchutong.com/biancheng/373247.html 转载请保留说明!上一篇:OpenGL教程翻译 第十课 索引绘制(opengl perspective)
下一篇:视锥裁剪(视锥是什么意思)
友情链接: 武汉网站建设