opengl shader 使用札记

learnopengl笔记——基础篇(3) 本次通过编写不同的GLSL程序来控制图形的颜色,可以通过属性指针glVertexAttribPointer绑定VBO的顶点,将顶点着色器和片段着色器链接起来,输出的图形就能展示出对应的颜色。 一个例子如下: #version 330 core顶点着色器 layout(location =0)in vec3 aPos;//位置 layout(location =1)in vec3 acolor;//颜色,由着色器外设置 out vec4 mycolor ;//该输出传给片段着色器 void main() 阅读详情

一、shader的使用步骤

创建shader

1、创建一个shader对象

GLuint glCreateShader(GLenum shaderType);  

2、将shader源代码传入前面创建的shader对象

void glShaderSource(GLuint shader, int numOfStrings, const char **strings, int *lenOfStrings);  

3、编译shader

void glCompileShader(GLuint shader); 

使用shader

1、创建一个对象,作为程序的容器

GLuint glCreateProgram(void);  

2、编译的shader附加到刚刚创建的程序中

void glAttachShader(GLuint program, GLuint shader); 

3、连接程序

void glLinkProgram(GLuint program);  

4、使用程序

void glUseProgram(GLuint prog);

删除shader

void glDeleteShader(GLuint id);  
void glDeleteProgram(GLuint id);

更加详细内容参见
http://blog.youkuaiyun.com/racehorse/article/details/6616256


二、shader数据类型

1、attribute variables
随不同顶点变化的全局变量,也即可以针对每个顶点设置该变量。
注:个修饰符只能用在顶点shader中,在shader中它是一个只读变量。
2、uniform
随不同图元变化的全局变量,也即不能对每个顶点设置该变量。
注:其值不能在glBegin/glEnd中设置。一致变量适合描述在一个图元中、一帧中甚至一个场景中都不变的值。一致变量在顶点shader和片断shader中都是只读的

OpenGL —— 2.2、Shader之间数据传输、向Shder传输数据 顶点着色器(Vertex Shader)负责处理输入的顶点坐标,并对它们进行变换和变换相关的计算。vertexShader.glsl的vertexColors作为fragmentShader.glsl的vertexColors的输入。OpenGL着色器(shader)是一种用于编写图形渲染代码的编程语言。它们在图形处理单元(GPU)上运行,用于控制渲染管线的不同阶段。GLSL是一种强类型语言,所有的变量都必须事先声明,并且要给出变量的类型。在OpenGL中,有两种主要类型的着色器:顶点着色器和片段着色器。 阅读详情

相关推荐

一文Shader变量使用避坑:uniform、varying变量多次if判断会严重降低帧率

2014年年中,在使用着色器进行图形渲染时,发现shader中uniform 、varying变量的if或for判断会严重影响帧率,而且这一现象与Android ROM平台没有关系。这里对该现象进行一个记录,并给出对应的解决方案。

bjxiaxueliang的CODING小栈 5214

OpenGLES 2.0 所有平台版本

OpenGL ES 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。

在OpenGL中使用Shader

本资源是博客[Modern OpenGL系列(四)]在OpenGL中使用Shader的源码,下载前请先浏览我的博客文章。下载后请用VS2015打开。

声音事件检测metric:PSDS

这项工作为多声道声音事件检测(SED)系统的性能评估定义了一个新的框架,它克服了传统的collar-based事件决定、事件F-cores和事件错误率的限制。拟议的框架引入了对事件检测的定义,该定义对标签的主观性更为稳健。它还采用了多声道接收器操作特性(ROC)曲线,以提供比F1分数更全面的系统性能洞察力,并建议将这些曲线简化为单一的多声道声音检测分数(PSDS),这允许系统独立于操作点(OPs)进行比较。所提出的方法还能更好地了解不同声音类别的数据偏差和分类稳定性。

Maestro_T的博客 2730

人工智能训练师认证教程(5)使用MONAI进行医学影像分析的完整指南

本文介绍了使用MONAI框架进行医学影像分析的全流程。首先详细说明了环境搭建步骤,包括PyTorch和MONAI的安装配置。然后以肺部CT 3D分割为例,分步骤讲解了数据准备与预处理、3D UNet模型构建、训练配置(DiceLoss损失函数、Adam优化器等)以及训练验证循环的实现。文章还包含推理可视化方法和模型导出为ONNX格式的部署方案,并强调了医学影像分析中的数据格式适配、强度归一化、显存优化等关键注意事项。最后指出MONAI的医学专用组件可大幅简化开发流程,建议后续可探索SwinUNETR等进阶方

华为开发者布道师,天府英才计划,致力于大数据+AI 的应用创新,助力企业与个人AI创新赋能。 1213

从零配置Archery:手把手教你用Docker部署多数据库审核系统(MySQL/PostgreSQL/ClickHouse)

本文详细介绍了如何从零开始使用Docker部署Archery多数据库审核系统,涵盖MySQL、PostgreSQL和ClickHouse的配置与整合。文章提供了生产级Docker-compose配置、审核规则定制、工单流程设置以及企业微信通知集成等实战指南,帮助团队构建统一的企业级SQL审计平台,提升数据库操作规范与安全。

e4f5g6h7的博客 941

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

A20802013的博客 2万+

EVM算法的Python实现

EVM(Eulerian Video Magnification,欧拉视频放大或欧拉影像放大)是一种将视频中的微小变化进行放大的算法,正如论文标题所说《Eulerian Video Magnification for Revealing Subtle Changes in the World》,该算法可以将视频中的微小变化转变为肉眼可以

flyingzhao 1万+

Windows11 升级到24H2后,原本的protel99se软件的DDB图纸文件打不开解决办法

Windows11更新后无法打开DDB文件

xingchen2837的博客 424

centos-stream-9上安装nvidia驱动和cuda-toolkit

centos-stream-9上安装nvidia驱动和cuda-toolkit

qq_19072921的博客 3022

基于Spring Boot 3 + Vue 3 + UniApp的全栈高校社团管理小程序设计与实现

requestMatchers("/api/auth/**", "/doc.html", "/webjars/**", "/v3/api-docs/**").permitAll() // 公开接口。<u-search placeholder="搜索活动" v-model="searchKeyword" @search="loadActivities" :showAction="false"></u-search>R.success("活动创建成功") : R.error("活动创建失败");

2201_76125393的博客 369

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: shadow projection
下一篇: shadow map
traceorigin
博客等级 码龄15年 38粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值