简单着色器编写(下)
函数部分介绍完了,最后来介绍一下main函数中的部分。
std::string vertexShader =
"#version 330 core\n"
"\n"
"layout(location=0)in vec4 position;"
"\n"
"void main()\n"
"{\n"
" gl_Position = position;\n"
"}\n";std::string fragmentShader =
"#version 330 core\n"
"\n"
"layout(location=0)out vec4 color;"
"\n"
"void main()\n"
"{\n"
" color=vec4(1.0,0.0,0.0,1.0);\n"
"}\n";
-
std::string vertexShader
:这是一个定义了顶点着色器源代码的字符串变量。 -
"#version 330 core\n"
:这是一行字符串,表示OpenGL的版本号和着色器的核心(core)版本,这里使用的是OpenGL 3.3 core profile。 -
"layout(location=0)in vec4 position;"
:这是顶点着色器的输入声明,指定了一个输入属性position
,它的位置索引是 0,表示顶点坐标。 -
"void main()\n"
:这是顶点着色器的主函数,它是着色器的入口点,用于对顶点进行处理。 -
"gl_Position = position;\n"
:这是顶点着色器的主要操作,将传入的顶点坐标赋值给内置的输出变量gl_Position
,这样OpenGL会将这个顶点坐标进行透视变换等操作,最终决定它在屏幕上的位置。 -
std::string fragmentShader
:同理,这是定义了片元着色器源代码的字符串变量。 -
"layout(location=0)out vec4 color;"
:这是片元着色器的输出声明,指定了一个输出变量color
,它的位置索引是 0,表示输出的片元颜色。 -
"color=vec4(1.0,0.0,0.0,1.0);"
:这是片元着色器的主要操作,将输出的片元颜色设置为红色(RGBA为1.0, 0.0, 0.0, 1.0),从而在屏幕上渲染出红色的图像。
这两个着色器源代码字符串定义了如何处理顶点和片元,并且最终通过链接和使用程序对象来在屏幕上绘制一个红色的三角形。
有人可能会问,这不就是一些字符串吗,怎么发挥作用的?
这些确实是一些字符串,但在OpenGL中,这些字符串是用来定义着色器程序的源代码的。这些源代码描述了OpenGL如何处理顶点和片元数据,从而实现图形渲染。
当你将这些字符串传递给OpenGL的函数时,OpenGL会将它们编译成真正的着色器对象,这些对象可以在GPU上执行。编译后的着色器对象将根据你的代码逻辑进行计算,以及在屏幕上绘制出图像。
所以,这些字符串实际上是描述了一系列计算步骤的指令,这些指令会告诉GPU如何处理顶点数据、应用纹理、计算颜色等操作,最终呈现出你所期望的图形效果。虽然它们看起来只是普通的字符串,但在OpenGL的上下文中,它们承载着实际的图形渲染逻辑。
unsigned int shader = CreateShader(vertexShader,fragmentShader);
glUseProgram(shader);
unsigned int shader = CreateShader(vertexShader, fragmentShader);
这一行是用来创建一个着色器程序的过程。
具体来说,这行代码调用了之前定义的 CreateShader
函数,将顶点着色器代码 vertexShader
和片元着色器代码 fragmentShader
作为参数传递给该函数。函数内部会编译这两个着色器并链接成一个完整的着色器程序。最后,返回的 unsigned int
类型的值 shader
就代表了这个着色器程序的标识符。
这个着色器程序包含了定义的顶点着色器和片元着色器,通过调用 glUseProgram(shader)
可以激活这个着色器程序,从而在渲染时使用这些着色器对顶点和片元进行处理。
整个着色器的编写已经介绍完毕,让我们来看看最后的效果吧!
相关文章:
![](https://img-blog.csdnimg.cn/c7e93be5c6b74368860958c839c89813.png)
简单着色器编写(下)
函数部分介绍完了,最后来介绍一下main函数中的部分。 std::string vertexShader "#version 330 core\n" "\n" "layout(location0)in vec4 position;" "\n" "void main()\n" "{\n&…...
![](https://www.ngui.cc/images/no-images.jpg)
go并发编程基础
go并发编程 1waitgroup WaitGroup就是等待所有的goroutine全部执行完毕,add方式和Down方法要配套使用 package mainimport ("fmt""sync" )func main() {var wq sync.WaitGroupwq.Add(100) //监控多少个goroutine执行结束for i: 0;i<100;…...
![](https://www.ngui.cc/images/no-images.jpg)
PHP之 导入excel表格时,获取日期时间变成浮点数
读取到的时间 float(0.20833333333333) 原格式 15:00:00 代码 if (Request::isPost()) {$file_url input(upfile); // 本地上传文件地址// 读取文件内容$local_file_url __dir__./../../../public.$file_url;// $spreadsheet new Spreadsheet();// $sheet $spreadsheet-…...
![](https://www.ngui.cc/images/no-images.jpg)
学习 Java 报表技术导入 Maven 依赖出错:jacob 无法下载、jasperreports 依赖错误
发生缘由 最近在做一个可视化项目,用到了 Java 报表技术。在跟着「黑马」课程导入 pom.xml 文件的时候提示下载依赖错误。 com.jacob 包无法下载Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js6 运行环境 电脑系统版本:Win…...
![](https://www.ngui.cc/images/no-images.jpg)
力扣-哈希-最长连续序列
题目 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: **输入:**nums [100,4,200,1,3,2] **输出&a…...
![](https://img-blog.csdnimg.cn/c7328153ff754731ae83526c887b111d.png)
Java线程 - 详解(1)
一,创建线程 方法一:继承Thread类 class MyThread extends Thread{Overridepublic void run() {System.out.println("线程1");} }public class Test {public static void main(String[] args) {MyThread myThread new MyThread();myThread.…...
![](https://www.ngui.cc/images/no-images.jpg)
结构体-C语言(初阶)
目录 一、结构体声明 1.1 结构概念 1.2 结构声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 二、结构体成员的访问 2.1 结构体变量访问成员 2.2 结构体指针访问指向变量的成员 三、结构体传参 一、结构体声明 1.1 结构概念 结构是一些值的集合,这些值称为…...
![](https://img-blog.csdnimg.cn/6fccf7d076b244b9ab06cc613d17dbd5.png)
【网络】HTTPS的加密
目录 第一组,非对称加密第二组,非对称加密第三组,对称加密证书签名 HTTPS使用的是非对称加密加对称加密的方案 (非对称加密:公钥加/解密,私钥解/加密) (对称加密:一组对称…...
![](https://img-blog.csdnimg.cn/a1406abb71cb4e528d76401a800724f8.png)
Nacos安装指南
Nacos安装指南 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: GitHub主页:https://github.com/alibaba/nacos GitHub的Release下载…...
![](https://img-blog.csdnimg.cn/44d3bb555b74467eb9d71b16bf7644c9.png)
java-Optional 类详解
目录 前言 Optional的构造方法 Optional的相关方法介绍 isPresent用法: get用法: filter用法: orElse用法: orElseGet用法 orElseThrow用法 map用法 flatMap用法: 前言 Optional 类是java8的新特性࿰…...
![](https://img-blog.csdnimg.cn/img_convert/b02b7441496eeba0bbbb970e0836f4b7.jpeg)
sql数据库怎么备份,sql 实时备份
在当今互联网时代,数据已经成为企业的核心资产。然而,数据的安全性和完整性面临硬件问题、软件故障、人工操作错误等各种威胁。为了保证数据的安全,实时备份已经成为公司必须采取的重要措施之一。下面我们就重点介绍SQL实时备份的重要实施方法…...
![](https://img-blog.csdnimg.cn/9a8084bf00404996b03c737e362e83b6.png)
RK3399平台开发系列讲解(存储篇)Linux 存储系统的 I/O 栈
平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、Linux 存储系统全景二、Linux 存储系统的缓存沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 Linux 存储系统的 I/O 原理。 一、Linux 存储系统全景 我们可以把 Linux 存储系…...
![](https://img-blog.csdnimg.cn/9ac114e5c67d4fc8849ad189d93e4c59.png)
Java“牵手”天猫淘口令转换API接口数据,天猫API接口申请指南
天猫平台商品淘口令接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取天猫商品的标题、价格、库存、商品快递费用,宝贝ID,发货地,区域ID,快递费用,月销量、总销量、库存、详情描…...
![](https://img-blog.csdnimg.cn/3ab7c0e1e3f54ef88172e137283e8a4c.png)
postgresql 条件表达式
postgresql 条件表达式 简单CASE表达式搜索CASE表达式缩写函数nullif函数示例 coalesce函数 总结 简单CASE表达式 语法如下 case 表达式when 值1 then 结果1when 值2 then 结果2else 默认值 end;select e.first_name , e.last_name , case e.department_id when 90 then 管…...
![](https://img-blog.csdnimg.cn/d57e20fce0634237913dd1dfaacaa708.png)
姜启源数学模型第五版第五章火箭发射升空
姜启源数学模型第五版第五章例题内容复现 数学建模背景1.学习内容火箭发射升空理论知识 2.例题3.问题分析不考虑空气阻力的模型考虑空气阻力的模型 4.代码内容复现不考虑空气阻力考虑空气阻力模型 数学建模背景 首先先简单的介绍数学建模是一个怎么样的内容 数学建模是一种将数…...
![](https://img-blog.csdnimg.cn/eb4570e0ad894d499be4c0fbad2aa5d5.png)
局域网中电脑共享文件给手机
学习资源: 局域网共享:这样设置,你可以轻松拷贝任何电脑的文件。_哔哩哔哩_bilibili 可以实现什么效果? 连接同一个WIFI,电脑端为服务端,提供共享文件,手机是客户端,可以读取服务端…...
![](https://www.ngui.cc/images/no-images.jpg)
线段树练习
P1198 [JSOI2008] 最大数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) // Problem: P1198 [JSOI2008] 最大数 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P1198 // Memory Limit: 128 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://c…...
![](https://www.ngui.cc/images/no-images.jpg)
Mybatis映射.动态sql.分页
介绍: 动态SQL是MyBatis提供的一种动态生成SQL语句的方式,可以根据不同的条件生成不同的SQL语句,从而实现更加灵活的查询和操作。 在MyBatis的映射文件中,可以通过使用if、choose、when、otherwise、foreach等标签来实现动态SQL…...
![](https://www.ngui.cc/images/no-images.jpg)
springboot向resources下写文件的两种方式
文章目录 方式一:方式二: 方式一: import java.io.File; import java.io.FileWriter; import java.io.IOException;public class WriterFileUtils {private static final String prefix "classpath:";public static void writeFi…...
![](https://img-blog.csdnimg.cn/d365369a03b94647bbdd6c36f0706479.png)
Sloare flare网卡信息
详细的安装信息 https://github.com/Xilinx-CNS/onload/tree/master/scripts 进行下载 Solarflare网卡开发:openonload 安装与调试_openonload安装_Erice_s的博客-CSDN博客 cns-sfnettest测试 cns-sfnettest 下载 https://github.com/Xilinx-CNS/cns-sfnettes…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis知识点整理
第一部分:Redis基础知识点 1、数据类型 5种常用基础类型:string,hash,list,set,zset – 字符串,Hash表,List顺序集合,Set无序集合,ZSet有序集合3中特殊类型:bitmap-字节地图, hyperloglog-统计…...
![](https://img-blog.csdnimg.cn/img_convert/64c27bf6f44a902bc1a5f70e1b152ef2.png)
React笔记(一)初识React
一、React概述 1、什么是react react的官网:React 用于构建用户界面的 JavaScript 库,它也是一个渐进式的用于构建用户界面的javascript框架 2、主要特征 声明式:使用原生JS编写的页面存在着开发效率低下、性能较差的情况,使用react大家就…...
![](https://img-blog.csdnimg.cn/8bdf46db095d4e39aea46cafefb23677.png)
C语言——指针进阶(一)
目录 编辑 一.字符指针 1.1 基本概念 1.2 面试题 二.指针数组 三.数组指针 3.1 数组指针的定义 3.2 &数组名VS数组名 3.3 数组指针的使用 四.数组参数、指针参数 4.1 一维数组传参 编辑 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 编辑 五.…...
![](https://csdnimg.cn/release/blog_editor_html/release2.2.9/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N4N7)
【ArcGIS Pro二次开发】(62):复制字段
应网友需求,做了这么一个复制字段的小工具。 假定这样一个场景,手头有一个要素1,要素里有10个字段,另一个要素2,除了shape_area等图形字段外,没有其它字段。 现在的需求是,想把要素1中的8个字…...
![](https://img-blog.csdnimg.cn/img_convert/a24c531ddb16eab274e279ae826dec97.png)
【Tkinter系列02/5】界面初步和布局
本文是系列文章第二部分。前文见:【Tkinter系列01/5】界面初步和布局_无水先生的博客-CSDN博客 说明 一般来说,界面开发中,如果不是大型的软件,就不必用QT之类的实现,用Tkinter已经足够,然而即便是Tkinter规…...
![](https://img-blog.csdnimg.cn/dd302e6d847743b5904f46de99ee8f58.png)
2023年03月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
第1题:最佳路径 如下所示的由正整数数字构成的三角形: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。你的任务就是求出最佳路径上的…...
![](https://www.ngui.cc/images/no-images.jpg)
介绍一些编程语言— CSS 语言
介绍一些编程语言— CSS 语言 CSS 语言 简介 CSS,层叠样式表,是一种用来表现 HTML 或 XML 等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。 CSS 能够对网页中元素位置的排版进…...
![](https://www.ngui.cc/images/no-images.jpg)
一文讲清楚c/c++中的宏
一文讲清楚c/c中的宏 文章目录 一文讲清楚c/c中的宏一、如何理解这个“宏”字面的意思呢?二、c/c中的宏详解三、宏的使用场景 一、如何理解这个“宏”字面的意思呢? 在刚开始学习C语言的时候,始终有点分不清楚"宏"这个字面上的意思…...
![](https://www.ngui.cc/images/no-images.jpg)
typescript进阶语法
typescript进阶语法 interface 接口定义 interface userType {name:string,age:number,sex?:string }type接口定义 type userType {name:string,age:number,sex?:string } type userType username # 固定值写法 let user:userType age # 报错 只能等于usernamepick摘取…...
![](https://www.ngui.cc/images/no-images.jpg)
宝塔终端 查看 7003端口 占用 并且杀死
要查看端口是否被占用并杀死相关进程,你可以按照以下步骤执行: 打开宝塔面板,进入服务器管理页面。在左侧导航栏中选择「工具」,然后选择「终端」进入宝塔终端界面。输入以下命令查看端口占用情况:netstat -tuln | gr…...
![](/images/no-images.jpg)
天津网站制作软件/开通网站需要多少钱
1.环境配置教程 环境变量、安装版、配置版 2.编写启动tomcat的批处理文件 3.改变端口 4.虚拟目录 转载于:https://www.cnblogs.com/bdqczhl/p/5929741.html...
![](https://img-blog.csdnimg.cn/20210604181644957.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80OTg4MDM0OA==,size_16,color_FFFFFF,t_70)
java 网站开发 教程/网站seo 优化
作者介绍 道明学长 腾讯数据PM一只; 告别野路子,带你探索数据新世界; “数据人创作者联盟”成员。 “金三银四”的换工作热潮已经过去两个月了,有人欢喜有人愁,身边有不少朋友斩获了多个大厂产品offer并已顺利入职…...
![](https://img-blog.csdnimg.cn/2019071511113531.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NyaWNrZXRfNw==,size_16,color_FFFFFF,t_70)
建设购物网站/百度一下百度搜索
1,Socket通信原理图解 2,Socket套接字概述: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。 通信的两端都有Socket。 网络通信其实就是Socket间的通信。 数据在两个Socket间通过IO流传输。 Socket在应…...
![](https://img-blog.csdnimg.cn/img_convert/b2f54ee183c2bc363043004ea316782f.gif)
网站开发项目需求/贵州二级站seo整站优化排名
介绍: 借助ruoyi这个平台开发一套资源平台。直接采用了RuoYi-Vue前后端分离基础平台。打造一款开源的电频平台。集成了奇文网盘。后台用的是vuespringboot,门户采用nuxtjsspringboot。 技术要点 前端采用Vue、Element UI、nuxt 基础平台采用的是RuoYi-…...
![](https://images2015.cnblogs.com/blog/799093/201607/799093-20160724234054216-576481851.jpg)
河北省和城乡建设厅网站/求职seo推荐
此块内容参考Ajax文档部分。主要复习内容:1.JavaScript核心对象 2.浏览器BOM对象3.文档对象模型DOM4.常见事件5.Ajax编程(web交互2种方式的对比)6.传统Ajax编程的步骤以及从服务器端返回的数据格式 7.JSON数据格式的转换操作 8.jQuery选择器 9.jQuery的Ajax编程(常见…...
新疆网站建设/国内广告投放平台
一、前言 在开发中,常常遇到对于屏幕的UI适配工作,下面就来看一下如何进行屏幕适配。 二、正文 1、游戏屏幕适配 屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适配之前首先要了解两个知识点: 1-1、什么是像素? …...