opengl shader 使用札记

2023-11-19

一、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.csdn.net/racehorse/article/details/6616256


二、shader数据类型

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opengl shader 使用札记 的相关文章

  • 从活动顶点数组生成平滑法线

    我正在尝试通过挂钩 OpenGl 调用来破解和修改旧版 opengl 固定管道游戏的多个渲染功能 而我当前的任务是实现着色器照明 我已经创建了一个适当的着色器程序 可以正确照亮大部分对象 但该游戏的地形是在没有提供正常数据的情况下绘制的 游
  • LWJGL 窗口具有透明背景?

    我想创建一个没有 黑色背景 区域的窗口 但您可以看到任何其他打开的窗口等 也就是说 渲染场景并且仅渲染场景 不留框架 不留背景区域 我读过一种方法 该方法涉及渲染到隐藏的 OpenGL 窗口并将其缓冲在内存中 创建透明分层窗口以及从内存复制
  • 计算边界球体半径时遇到一些问题

    我已经设法用两种方法计算边界球体半径 但没有一种方法能够准确地满足我的要求 我不需要 像素 完美边界球 但我想要比我目前拥有的更好的东西 我正在使用 Wavefront obj 模型并计算这些模型的边界球半径 我提取当前模型尺寸 我使用 N
  • 着色器/矩阵问题 - 看不到对象

    我试图在屏幕上放置一个立方体并点亮它 我想要在立方体上添加 phong 阴影 当我运行代码时 我可以看到背景图像 但看不到立方体 我相当确定立方体本身是正确的 因为我已经设法用纯色着色器显示它 我已经设法编译着色器程序 但我根本看不到立方体
  • 将 CVPixelBuffer 渲染到 NSView (macOS)

    我有一个CVPixelBuffer我正在尝试在屏幕上有效地绘制 转变为低效率的方式NSImage可以工作 但速度非常慢 丢掉了大约 40 的帧数 因此 我尝试使用将其渲染在屏幕上CIContext s drawImage inRect fr
  • 静态链接库时出现 glew 链接器错误

    我正在尝试在 Visual Studio 2012 中构建一个 opengl 项目 我想静态包含 glew 库 因此我从源代码构建它并将生成的 glew32sd lib 复制到我的 lib 目录 我将此 lib 路径提供给 Visual S
  • glutPostRedisplay 不在循环内工作

    我试图让一个人在 y 轴上跳跃 所以我使用 2 秒的循环 第一秒它应该向下移动并弯曲膝盖 第二秒它应该向上移动 然后在起始位置完成 现在我刚刚开始让这个人在第一秒内跪下并弯曲膝盖 我还没有编写动画的其余部分 问题是 glutPostRedi
  • OpenGL:调试“单通道线框渲染”

    我正在尝试实现论文 单通道线框渲染 它看起来很简单 但它给了我所期望的厚暗值 论文没有给出计算海拔高度的确切代码 所以我按照自己认为合适的方式进行了操作 代码应该将三个顶点投影到视口空间中 获取它们的 高度 并将它们发送到片段着色器 片段着
  • 为什么我的 FPS 相机一劳永逸地滚动?

    如果我忽略四元数代数的肮脏细节 我想我理解了旋转和平移变换背后的数学 但仍然不明白我做错了什么 为什么我的相机一劳永逸地滚动 更具体地说 我应该如何从相机的方向 旋转矩阵 计算相机视图矩阵 我正在用 Python 编写一个简约的 3d 引擎
  • 不理解 gluOrtho2D 函数

    我不能做什么gluOrtho2D 函数是做什么的 是否将原点固定在 OpenGL 窗口上的某个特定点或其他位置 这是因为gluOrtho2D 1 1 1 1 将原点固定在窗口的中间 如果它在某个时刻没有修复原点 那么有什么方法可以修复原点
  • 简单的线框格式?

    我正在寻找一种用于线框模型的简单文件格式 我知道 VRML u3D 等 但这些对于我的需求来说似乎很重要 我的标准是 必须有明确的规格 要么是开放的 要么是非常完善 记录的 我只需要 想要 简单的模型 顶点和边 我不想处理面孔或物体 如果格
  • OpenGL 中连续暂停

    void keyPress unsigned char key int x int y int i switch key case f i 3 while i x pos 3 sleep 100 glutPostRedisplay 上面是在
  • WebKit 是否使用 OpenGL 来渲染 CSS 过渡?

    WebKit 是使用 OpenGL 来渲染 CSS 过渡 还是使用软件渲染 WebKit 只是一个前端 这取决于后端和硬件支持 谷歌浏览器使用skia http code google com p skia 作为后端 它可以使用软件或硬件
  • 阻止 OpenGL.framework 在 Cocoa 应用程序中加载

    我的应用程序链接到这些框架 Cocoa Framework AppKit Framework CoreData Framework Foundation Framework 请注意 OpenGL Framework 是NOT已链接 但是 设
  • 对齐坐标系

    Let s say I have 2 coordinate systems as it is shown in image attached 如何对齐这个坐标系 我知道我需要将第二个坐标系围绕 X 平移 180 度 然后将其平移到第一个坐标
  • glBlitFramebuffer 渲染缓冲区和渲染全屏纹理哪个更快?

    哪个更快更高效 使用 OpenGL 纹理作为 CUDA 表面并在四边形上渲染 新样式 使用渲染缓冲区作为 CUDA 表面并使用 glBlitFramebuffer 进行渲染 None
  • 使用 C# 截取任何外部应用程序的屏幕截图

    我们有一个 C WPF 应用程序 我们想要在其中截取我们启动的任意应用程序的屏幕截图 即 我们可以引用我们启动的进程 应用程序可能已最小化或位于其他窗口后面 但我们仍然只需要单个应用程序的图像 而不是重叠像素 我知道使用 BitBlt 或的
  • 为什么拥有单独的投影矩阵但结合模型和视图矩阵会有好处?

    当您学习 3D 编程时 您会被告知用 3 个变换矩阵来思考是最简单的 模型矩阵 该矩阵对于每个模型都是独立的 它根据需要旋转和缩放对象 最后将其移动到 3D 世界中的最终位置 模型矩阵将模型坐标转换为世界坐标 视图矩阵 对于大量对象 如果不
  • 在 Linux 上运行我自己的程序的权限被拒绝? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有Ubuntu 9 4 我已经构建了程序 一些基本的 OpenGL 该程序只是制作一个旋转的正方形 然后运行它并 sh blabla p
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染

随机推荐

  • spring的事务配置详解

    接下来我将给大家介绍spring事务配置的两种方式 1 基于XML的事务配置 2 基于注解方式的事务配置 前言 在我们详细介绍spring的两种声明式事务管理之前 我们需要先理解这些概念 1 spring的事务管理是通过Aop的方式来实现
  • 不同cpu平台互传docker镜像

    说明 不同的平台之间docker镜像不能共用 假如使用mac pull的镜像 load 到amd平台上不能使用 但是可以在pull镜像使用 platform linux amd64 pull amd64 架构的镜像 docker pull
  • 西门子S7-1200 PLC选型前这些要了解

    西门子S7 1200PLC是西门子S7系列PLC产品中一员 S7系列产品包含有 S7 200 Smart 200 S7 1200 S7 300 S7 1500 S7 400等系列PLC 其中S7 200 Smart 200 S7 1200系
  • Jetson TX2刷JetPack3.3(方法二)

    官网上的刷机教程都是需要一个路由器才能刷机 这篇博客介绍如何不要路由器 只需要一个宿主机就可以刷机的教程 1 刷机准备工作 JetPack是一个x86二进制文件 不能在基于ARM的机器上运行 因此需要借助一个宿主机来刷JetPack 因此
  • 数据结构模板

    链接
  • Github-Copilot初体验-Pycharm插件的安装与测试

    引言 80 代码秒生成 AI神器Copilot大升级 最近copilot又在众多独角兽公司的合力下 取得了重大升级 GitHub Copilot发布还不到两年 就已经为100多万的开发者 编写了46 的代码 并提高了55 的编码速度 据官博
  • Quartus导出网表文件:.qxp和.vqm

    当项目过程中 不想给甲方源码时 该如何 我们可以用网表文件qxp或者vqm对资源进行保护 下面讲解这两个文件的具体生成步骤 一 基本概念 QuartusII的qxp文件为QuartusII Exported Partition 用于创建综合
  • c#float取小数点后两位_C# 保留小数点后两位(方法总结)

    最简单使用 float i 1 6667f string show i ToString 0 00 结果1 67 四舍五入 其他类似方法 string show i ToString F F2 f 不区分大小写 string show St
  • SpringBoot集成Swagger4

    Swagger是一种工具 可以帮助开发人员设计 构建 文档化和测试 RESTful Web 服务 Swagger提供了一种交互式文档格式 可以使用它来了解 API 的用法 参数 返回值等等 Spring Boot提供了集成Swagger的简
  • Servlet接口实现类

    JavaWeb 03 Servlet 02 Servlet接口实现类 1 什么是Servlet接口 有什么用 Servlet接口来自于Servlet规范中的一个接口 这个接口存在于Http服务器所提供的jar包中 Servlet接口的具体位
  • 【NVMe2.0b 14-6】Format NVM、Keep Alive、Lockdown command

    目录 5 14Format NVM command 5 14 1Command Completion 5 18Keep Alive command 5 18 1Command Completion 5 19Lockdown command
  • 啪啪动物城 源码

    游戏地址 http www 4399 com flash 192131 htm 啪啪动物城源码 https files cnblogs com files gamedaybyday E5 95 AA E5 95 AA E5 8A A8 E7
  • Metasploit 提权篇

    声明 文中所涉及的技术 思路和工具仅供以安全为目的的学习交流使用 任何人不得将其用于非法用途以及盈利等目的 否则后果自行承担 文章目录 内核漏洞提权 enum patches模块 Windows Exploit suggester Wind
  • web服务器响应的端口号,web服务器端口号

    web服务器端口号 内容精选 换一换 Nginx Web Server场景是以Nginx作为Web Server的场景 Nginx作为Web Server 可以被配置部署为静态资源Web Server 在该配置下可以高效的进行静态资源的请求
  • python学习笔记——条件判断

    上篇 https blog csdn net qq 42489308 article details 89388218 条件判断 条件判断是通过一条或多条判断语句的执行结果 True或者False 来决定执行的代码块 在Python语法中
  • uboot分析之Makefile

    Uboot分析之Makefile 1 uboot根目录下执行 make smdk2410 config smdk2410 config unconfig MKCONFIG config arm arm920t smdk2410 samsun
  • 数据集下载OTB,VOT,UAV,鸢尾花

    OTB数据集下载百度网盘链接 链接 https pan baidu com s 1snsJF 7Sw EbKtzdvLO1nw 提取码 ls23 VOT数据集下载百度网盘链接 链接 https pan baidu com s 1UiTG1z
  • AI顶级会议列表 & ACL相关

    The First Class tier 1的conferences 其实基本上就是AI里面大家比较公认的top conference 下面同分的按字母序排列 IJCAI 1 AI最好的综合性会议 1969年开始 每两年开一次 奇数年开 因
  • 基于互补搜索技术和新颖架构设计,结合MobileNetV3主干网络,打造不同的目标检测器

    基于互补搜索技术和新颖架构设计 结合MobileNetV3主干网络 打造不同的目标检测器 目标检测是计算机视觉中的一个重要任务 随着深度学习技术的发展和神经网络的不断优化 YOLOv5已成为目前最流行的目标检测框架之一 然而 为了进一步提高
  • opengl shader 使用札记

    一 shader的使用步骤 创建shader 1 创建一个shader对象 GLuint glCreateShader GLenum shaderType 2 将shader源代码传入前面创建的shader对象 void glShaderS