位置: 编程技术 - 正文

OpenGL学习日记-2015.3.5——Hello glsl(着色器)(opengl怎么学)

编辑:rootadmin
过年前忍不住买了本新版的OpenGL编程指南,主要的目的还是为了系统的学习着色器编程,另外就是接触新版的OpenGL技术和思想。看了几页,就过年了QAQ.回来后也是各种不在状态,不想上班,不想工作,不想写代码。。。昨天终于强迫自己继续看书,也找回了些状态。 书本基础知识的全面性和权威性就不用说了,不过这个源代码就。。。。这第一个例子照着代码来抄结果。。。我想应该是原来的代码一个参数错了,折腾了半天,代码分析是详说。主要是分析代码,有什么说什么,并没有全面的说明着色器的基本内容,想着在着色器的基础知识看的差不多或者更熟悉了再做一次总结。顶点着手器: 第一行是着色器版本说明,以上是对应于OpenGL 3.3版本,在编写着色器程序是虽然使用最新的版本可以使得程序充分利用的Opengl的新特性,当时也同时带来兼容性的问题。所以根据自己的程序需要做一个权衡。 第二三行定义了4x4的矩阵,从字面意义上看,他们分别是透视投影矩阵和,模型视图矩阵,在main与顶点坐标做透视投影变换和模型视图变换。 关于uniform关键字:是个存储限制符,uniform修饰符可以指定一个在应用程序中定义好的变量,他不会再图元处理过程中变化(着色器流水中),它在所有的着色器阶段都是共享的所以它必须是全局的变量(相对于着色器)。任何类型的变量都可以为uniform修饰。!!!重要:着色器无法修改,写入uniform修饰的变量,无法改变它的&#;。 第四五行定义了两个4维向量,比较生疏的修饰符。glsl声明的解读和c&#;&#;一样,从右往左读。position是个变量名,vec4说明了这个变量是4维向量,in修饰符代表着变量是一个输入变量(无修饰时,默认&#;),然后是layout(location = 0),她叫做布局限定符,目的是为了方便给变量提供数据,layout()的还有其他的选项,在这里location相当于设定了变量在着色器程序中的访问位置。 第六行同样定义了一个4维向量,不同的是out修饰符,同理易知代表着这个变量是用于输出数据,这里是给片段着色器提供颜色的输入数据,在下面的片元着色器中将再次看到该变量。 最后是main()函数,每一个着色器都必须有一个main()函数,与c、c&#;&#;不同的是这个函数没有返回&#;,没有参数。函数里第一行对输出变量赋予应用程序中传递过来的颜色&#;,以便传递给片元着色器使用、第二行对gl_Position赋&#;,这是个OpenGL的内置变量,所有OpenGL的内置变量都是以gl_为前缀。gl_Position表示顶点坐标,最终OpenGL将根据该&#;绘制每一个顶点。 片元着色器: 从第二行说起吧,这个变量在顶点着色器中出现过,不同的是修饰符从out变成了in。对,这个变量的&#;就是从顶点着色器中传递过来的。 最后main函数中输出了颜色color。两个必要的着色器编写完成,接下来需要进行着色器装配。着色器的装配过程有点像c&#;&#;程序的编译生成过程,经过了几个阶段,编译,连接,执行。程序使用了书中源码的LoadShaders接口。繁琐的细节就略过,关注于着色器的装配。一下是LoaderShaders.cpp的内容,将在代码注释中详细描述每一步 总结来说: 1、glCreateProgram()创建一个着色器程序。 2、glCreateShader() 根据着色器不同阶段创建需要的着色器。 3、glShaderSource()把着色器字符串提交到OpenGL等待编译。 4、glCompileShader()编译着色器。 5、glAttachShader()把编译好的着色器与着色器程序关联,装配的过程。 6、glLinkProgram()连接装配好的着色器成为一个可使用的着色器程序。 7、glUseProgram()激活对应的着色器,使他对应用程序生效。接下来是程序主体,最终效果绘制4个排列的彩色三角形首先是初始化函数:整个cpp文件全贴出来了,详细注释。到此,全部核心代码已经详细注释,特此记录,.3.8深夜~~

推荐整理分享OpenGL学习日记-2015.3.5——Hello glsl(着色器)(opengl怎么学),希望有所帮助,仅作参考,欢迎阅读内容。

OpenGL学习日记-2015.3.5——Hello glsl(着色器)(opengl怎么学)

文章相关热门搜索词:opengl怎么学,opengl learning,opengl教程48讲,opengl示例,opengl教程48讲,opengl入门视频教程,opengl教程48讲,opengl learn,内容如对您有帮助,希望把文章链接给更多的朋友!

java的OpenGL学习资料 javaeclipseopengl环境配置使用EclipseRCP进行桌面程序开发(六):向OpenGL进军xxyy的计算机图形学博客wjyjimy的jogl的入门javaOpenGL开发配置(SWT)在SWT中使用O

学习 Nehe Lesson 5 第五课开始就正式进入3D空间啦,这一课虽然只是简单地构建了四棱锥和正方体,但已经可以看得出来在OpenGL空间内绘制物体的基本方法是按照一定顺序

Skia深入分析8——Skia的GPU绘图 Skia的GPU绘图一、Skia-GPU概述在Android4.2到Android5.0的过程中,skia中开发较频繁的部分莫过于GPU加速部分和延迟渲染机制,尽管目前来看几乎没有用到,但

标签: opengl怎么学

本文链接地址:https://www.jiuchutong.com/biancheng/373103.html 转载请保留说明!

上一篇:Eclipse下的SWT的OpenGL开发(配置、实例及源码)正弦波(eclipse swt教程)

下一篇:java的OpenGL学习资料(opengl教程48讲)

  • 什么是税目税基税率,简答题
  • 购入原材料计划成本
  • 原材料暂估入库怎么做账
  • 2020年个税申报流程视频
  • 小规模现金流量表的编制方法和计算公式
  • 公司打印银行回单和对账单
  • 收到保险公司开票怎么做账
  • 怎么样办理银行卡?
  • 当月报废生产设备一台,原价80万元
  • 小规模纳税人销售已使用固定资产
  • 工程材料增值税专用发票税率
  • 借给股东的借款怎么做账
  • 企业所得税属于什么科目
  • 意外死亡公司赔偿多少标准
  • 进项税发票不认证可以吗
  • 财产租赁合同印花税申报期限
  • 发票联丢失用抵扣联做账可以吗
  • 工程结算科目属于哪一类
  • 审核费用发票需要发票吗
  • 一般贸易免抵退税计算
  • 加油发票的票据抬头是个人,这样可报销吗?
  • 企业提供技术咨询服务的企税优惠政策
  • 技术服务费收入属于提供劳务收入吗
  • 多给员工交了社保能退回吗
  • 公司房产税怎么做分录
  • 辞退补偿金怎么算n1吗
  • win10更新补丁卸载不了
  • ubuntu22.04更换RTX 4090显卡后,安装驱动和pytorch记录
  • 使用mac什么意思
  • php字符串操作函数
  • 什么是减值测试方法
  • 公司送红包账务怎么处理
  • php反射使用场景
  • php nl2br
  • 办置业公司需要哪些材料
  • 违约金的增值税税率
  • 高温补贴 个人所得税
  • 教育经费地方出多少
  • php正则表达式匹配字符串
  • php db2
  • 机关单位工会经费提取比例
  • 级联选择器 数据回显
  • pytorch go
  • 前端使用vue的好处
  • 制药企业客户退货流程
  • 滴滴出行发票税率是多少
  • 营业利润包括资产处置收益吗
  • 固定资产一次性扣除如何做账
  • 修改Dede默认投票代码 防止Request Error错误
  • 委外加工如何管理
  • 运费与快递费的区别在哪
  • 项目上工人死亡赔偿
  • 购买空调报销写什么科目的
  • 农业合作社账务都有什么科目
  • 计提固定资产折旧怎么做会计科目
  • 出口额和外汇收入
  • 其他货币资金微信和支付宝的管理
  • 分包开给总包的票,能不能抵扣
  • 事业单位收到钱怎么记账
  • 新冠肺炎疫情相关租金减让
  • 计提资产减值是好事还是坏事
  • 建账的基本流程图
  • 公司的私账
  • mysql5.7.27安装教程
  • win10升级win1
  • win7系统internet怎么打开摄像头
  • 电脑英伟达控制面板在哪
  • pniopcac.exe是什么
  • win7 64位系统怎么查看串口号?
  • jquery操作html代码
  • linux安装ko驱动
  • 批处理应用实例
  • jquery 插件写法
  • 网页中英文切换
  • unity打包64位出错
  • shell脚本简单例子
  • js添加一个div
  • 关联企业签订劳动合同的次数可以累计吗
  • 专家费缴税标准
  • 河北税务登录密码是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设