⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamacontrol.cpp

📁 涉及windows游戏编程中的一些源码
💻 CPP
字号:
/**********************************************************
   模块名称:
       GamaControl.cpp
   目的: 
       提供一个伪Gama控制器。

   作者:
        潘李亮2003 - 5

**********************************************************/
#include "GamaControl.h"
#include "OpenGLCom.h"

CGamaControl::CGamaControl()
{
	m_gama = 1.0;
}

CGamaControl::~CGamaControl()
{

}

void CGamaControl::SetGama(float f)
{
	m_gama = f;
	if(f>2.0)
		m_gama=2.0;
	if(f<0)
		m_gama=0;
}

void CGamaControl::Apply()
{

	if(m_gama == 1.0)
		return ;
	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadIdentity();
	glOrtho(0,1.0,0,1.0,-100,100);
    
	//单位的视图矩阵。我们不需要任何的变换,因为是平面的图象操作。
	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glLoadIdentity();


    glDisable(GL_TEXTURE_2D);
	glDisable(GL_DEPTH_TEST);
    glDisable(GL_ALPHA_TEST);
	glDisable(GL_LIGHTING);

	//现在我们使用混合功能,把先前保留下来的图象和当前的渲染结果混合起来。
	if(m_gama<=1.0)
		glColor4f(0,0,0,m_gama);
	else
		glColor4f(m_gama-1.0,m_gama-1.0,m_gama-1.0,1.);
	
	glEnable(GL_BLEND);
	glBlendFunc(GL_ONE,GL_SRC_ALPHA);

	glPushAttrib(GL_POLYGON_BIT); 
	glPolygonMode(GL_FRONT,GL_FILL);
	glPolygonMode(GL_BACK,GL_FILL);
	glBegin(GL_QUADS);
		glVertex3f(0,0,5);
		glVertex3f(1,0,5);
		glVertex3f(1,1,5);
		glVertex3f(0,1,5);
	glEnd();

    glPopAttrib();
   
	//恢复投影矩阵和视图矩阵。
	glPopMatrix();
	glMatrixMode(GL_PROJECTION);
	glPopMatrix();
}

float CGamaControl::GetGama()
{
	return m_gama;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -