OpenGL中的上下文 理解整理

OpenGL中的上下文(Context)OpenGL状态机与上下文OpenGL是一个状态机,它拥有非常多的状态变量,并且每个状态变量都有默认值。OpenGL在渲染的时候需要一个Context来记录了OpenGL渲染需要的所有信息和状态,可以把它理解成一个大的结构体,它里面记录了当前绘制使用的颜色、是否有光照计算以及开启的光源等非常多我们使用OpenGL函数调用设置的状态和状态属性。在程序中,我们设置的各种状态和默认状态会一直生效,直到我们再次修改它们。状态机并不是一个好的设计,多个绘制算法同时跑,容
摘要由CSDN通过智能技术生成

OpenGL中的上下文(Context)

OpenGL状态机与上下文

OpenGL是一个状态机,它拥有非常多的状态变量,并且每个状态变量都有默认值。

OpenGL在渲染的时候需要一个Context来记录了OpenGL渲染需要的所有信息和状态,可以把它理解成一个大的结构体,它里面记录了当前绘制使用的颜色、是否有光照计算以及开启的光源等非常多我们使用OpenGL函数调用设置的状态和状态属性。

在程序中,我们设置的各种状态和默认状态会一直生效,直到我们再次修改它们。状态机并不是一个好的设计,多个绘制算法同时跑,容易被前面的状态所影响,OpenGL为了向前兼容,状态机的形式就被一直延续下来了。

GPU的CS模式和上下文

如上所述,OpenGL的一组状态机对应着一个上下文。OpenGL采用了Client-Server模式,GPU相当于一台服务器,可对应多个客户端即上下文,一个客户端维护着一组状态机。大部分的OpenGL命令都是异步的,不代表真正地执行,只是客户端向服务器发送了一些命令(同时有一些API可实现同步功能)。如果两个窗口分别对应两个不同的绘制上下文,则两个窗口彼此状态独立,绘制状态不会互相影响,宏观上看绘制也是并行的。

线程私有

OpenGL的绘制命令都是作用在当前的Context上,这个Current Context是一个线程私有(thread-local)的变量,也就是说如果我们在线程中绘制,那么需要为该线程制定一个Current Context的,当多个线程参

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值