OpenGL(一) OpenGL管线 与 可编程管线流程

本文主要探讨OpenGL的可编程管线,介绍了从main函数初始化到帧循环中的绘制过程,强调了可编程管线与固定管线的区别。通过GLSL语言,展示了如何创建GPU程序并执行绘制命令。同时,提到了OpenGL 2.0的限制,并给出简单的VertexShader和FragmentShader示例。文章最后指出,变量从C++传入到OpenGL shader中以增加灵活性。
摘要由CSDN通过智能技术生成

由于OpenGL是一个纯渲染核心,要写OpenGL程序,得先搭建一个外壳程序。不同平台下外壳程序的实现各有不同,这个系列的文章都在win32的平台上进行。具体实现,网上能找到很多,所以这不是本文的重点。本篇主要构建探讨 OpenGL管线 本身,具体说来,就是构建可编程管线。

主体流程

大体流程是:

  1. 在main函数中拉起外壳程序,初始化一些默认参数。例如双缓冲,32位颜色等。
  2. 创建GL上下文(HGLRC)。
  3. 加载&设置OpenGL的相关参数
  4. 在帧循环中进行绘制

至于固定管线和可编程管线,主要区别在3、4部分。固定管线是将绘制的方法写死到代码中,而可编程管线可以理解为脚本化了渲染的逻辑。不过这两者渲染的数据部分仍由编译后的程序提供。

具体说来,通过一种语法定义,将一个文本文件实例化到内存中,并且在运行时动态编译,挂载,链接到GPU程序中,完成绘制算法的替换。对应的,由于所有数据都放在内存中,绘制时,需要将它传输到GPU上,这就是缓冲区(glBuffer)。缓冲区在CPU上,会将在某些时间段内缓冲区的数据一起提交给GPU。

实现

总的来看,可编程管线动态生成了一段绘制程序,在每个GPU核心通过绘制命令,绘制传给他数据。简单的看下两部分的代码片段:

首先是创建GPU绘制程序

GLuint CreateGPUProgram(const char* vsShaderPath,const
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值