【OpenGL】一个好用的 GL 环境状态存储类

作为带有渲染功能的 SDK ,在完成某些特定需求的情况下,需要在游戏引擎(Unity、Unreal、Native 等)的线程里进行绘制。同时,绘制某些物体需要特定的 OpenGL 环境,因此不得不改变 OpenGL Context 。

然而,在 SDK 进行切换 OpenGL Context 时,并不清楚之前在 游戏引擎 中的 OpenGL Context State。理论上,应该由游戏引擎每一帧开始绘制时重新重置 OpenGL Context 环境状态。但是,仍然会存在一些问题,而且,在某些其他的场景下,可能我们也想实现在我们的渲染命令执行完成后,恢复初始的 OpenGL 环境。因此,接下来这个 GlStateSave 类实在是很不错的设计。

#ifndef GLSTATESAVE_H
#define GLSTATESAVE_H
#include "GlUtils.h"

class GLStateSave
{
   
public:
	// If our code only uses VertexArrayObjects, we don't need to
	// save and restore all the buffer related state
	static const bool	exclusivelyVAO = true;

	GLStateSave()
	{
   
		glGetIntegerv( GL_BLEND, &Blend );
		glGetIntegerv( GL_BLEND_DST_ALPHA, &BlendDstAlpha );
		glGetIntegerv( GL_BLEND_DST_RGB, &BlendDstRGB );
		glGetIntegerv( GL_BLEND_EQUATION_ALPHA, &BlendEquationAlpha );
		glGetIntegerv( GL_BLEND_EQUATION_RGB, &BlendEquationRgb );
		glGetIntegerv( GL_BLEND_SRC_ALPHA, &BlendSrcAlpha );
		glGetIntegerv( GL_BLEND_SRC_RGB, &BlendSrcRGB );

		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海Enoch

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值