当前位置: 首页 > article >正文

[cg] glProgramBinary

参考: glProgramBinary - OpenGL 4 Reference Pages

opengl 通过gpu编译好的 shader 可以存储到二进制文件中,第二次使用的时候直接加载二进制文件即可, glProgramBinary用于加载shader的二进制数据

实列代码如下:

// 假设已经有一个编译好的着色器程序对象 program

// 获取二进制数据
GLint binaryLength = 0;
GLenum binaryFormat = 0;
glGetProgramBinary(program, 0, &binaryLength, &binaryFormat, NULL);
GLubyte *binary = (GLubyte *)malloc(binaryLength);
glGetProgramBinary(program, binaryLength, &binaryLength, &binaryFormat, binary);

// 保存二进制数据到文件(例如)
save_to_file("shader.bin", binary, binaryLength);
free(binary);

// 后续启动时加载二进制数据
GLuint newProgram = glCreateProgram();
load_from_file("shader.bin", &binary, &binaryLength);
glProgramBinary(newProgram, binaryFormat, binary, binaryLength);
free(binary);

// 验证加载是否成功
GLint linkStatus = GL_FALSE;
glGetProgramiv(newProgram, GL_LINK_STATUS, &linkStatus);
if (linkStatus == GL_FALSE) {
    // 处理错误
}


http://www.kler.cn/a/511839.html

相关文章:

  • 关于机器学习的一份总结
  • 和优秀的人一起共事,你会越来越优秀!
  • 如何使用 Go语言操作亚马逊 S3 对象云存储
  • ARM架构中如何判断stage 1 on/off
  • vscode离线安装插件--终极解决方案
  • HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (四、最近上映电影滚动展示及加载更多的实现)
  • JavaScript系列(35)-- WebSocket应用详解
  • Redis系列之底层数据结构字典Dict
  • 图像处理|顶帽操作
  • Kivy App开发之UX控件Bubble气泡
  • 使用redis-cli命令实现redis crud操作
  • Meta标签教程:提升网站SEO与用户体验的利器
  • 人工智能之数学基础:线性代数中的线性相关和线性无关
  • windows下使用docker执行器并配置 hosts 解析
  • Agent AI: 强化学习,模仿学习,大型语言模型和VLMs在智能体中的应用
  • 2024年第十五届蓝桥杯青少组国赛(c++)真题—快速分解质因数
  • 仿 RabbitMQ 的消息队列2(实战项目)
  • 在C#中添加I/O延时和持续时间
  • Ubuntu 22.04 能识别笔记本的键盘,但是无法识别外接键盘
  • 【无界】微前端技术应用
  • 【大数据】机器学习----------降维与度量学习
  • 【自动驾驶BEV感知之tesla发展历程】
  • git命令手册
  • Ubuntu 24.04 LTS 更改软件源
  • 故障诊断 | BWO白鲸算法优化KELM故障诊断(Matlab)
  • ARP 表、MAC 表、路由表、跨网段 ARP