glPushAttrib保存属性组 改变属性 glPopAttrib恢复属性组
2016-05-20 12:20
731 查看
属性组有服务器的GPU,客户端的CPU,默认是服务器的。
属性组的使用,可以很方便的保存指定掩码的属性组,改变属性组,然后恢复属性组。
属性组只是渲染状态的集合,和DX的属性表不同。
int nAttriNumS, nAttriNumC= 0;
glGetIntegerv(GL_MAX_ATTRIB_STACK_DEPTH, &nAttriNumS);
glGetIntegerv(GL_MAX_ATTRIB_STACK_DEPTH, &nAttriNumC);
void BoxGeometryRenderer::render( const Eigen::Matrix<GLdouble,3,1>& color )
{
glPushMatrix();
glScaled( GLdouble( m_geo.r().x() ), GLdouble( m_geo.r().y() ), GLdouble( 1.0 ) );
glPushAttrib( GL_COLOR ); // 保存之前的属性
glColor3d( color.x(), color.y(), color.z() ); // 改变属性
glBegin( GL_TRIANGLE_STRIP );
glVertex2d( -1.0, 1.0 );
glVertex2d( -1.0, -1.0 );
glVertex2d( 1.0, -1.0 );
glVertex2d( 1.0, 1.0 );
glVertex2d( -1.0, 1.0 );
glEnd();
// The glPopAttrib function
restores the values of the state variables saved with the last glPushAttrib command.
// Those not saved are left unchanged.
glPopAttrib(); //恢复属性
glPopMatrix();
}
属性组的使用,可以很方便的保存指定掩码的属性组,改变属性组,然后恢复属性组。
属性组只是渲染状态的集合,和DX的属性表不同。
int nAttriNumS, nAttriNumC= 0;
glGetIntegerv(GL_MAX_ATTRIB_STACK_DEPTH, &nAttriNumS);
glGetIntegerv(GL_MAX_ATTRIB_STACK_DEPTH, &nAttriNumC);
void BoxGeometryRenderer::render( const Eigen::Matrix<GLdouble,3,1>& color )
{
glPushMatrix();
glScaled( GLdouble( m_geo.r().x() ), GLdouble( m_geo.r().y() ), GLdouble( 1.0 ) );
glPushAttrib( GL_COLOR ); // 保存之前的属性
glColor3d( color.x(), color.y(), color.z() ); // 改变属性
glBegin( GL_TRIANGLE_STRIP );
glVertex2d( -1.0, 1.0 );
glVertex2d( -1.0, -1.0 );
glVertex2d( 1.0, -1.0 );
glVertex2d( 1.0, 1.0 );
glVertex2d( -1.0, 1.0 );
glEnd();
// The glPopAttrib function
restores the values of the state variables saved with the last glPushAttrib command.
// Those not saved are left unchanged.
glPopAttrib(); //恢复属性
glPopMatrix();
}
相关文章推荐
- linux 终端输出颜色
- linux screen 命令详解
- linux套接字编程之多进程多线程练习
- 操作系统知识(5)--Linux vi/vim
- Linux资源管理之cgroups简介
- windows连接linux_mysql
- 开启nginx目录文件列表显示功能
- Linux下find命令
- LINUX目录结构
- linux 远程 windows 命令:rdesktop vs windows mstsc
- 用户及权限
- linux awk命令详解
- jenkins 安装配置: centos-master windows/linux-slave + nginx代理 + node + job
- Linux之常用命令
- 2.2#####阿里云软件市场教你搭建网站(linux界面 视频)
- 理解OpenCV中的宏定义 CVAPI(函数返回类型)
- centos 安装配置 rabbitmq 以及nginx转发
- Linux06--Shell程序设计02 数据流重定向与管道
- 小何讲Linux: Linux下进程间通信概述
- jsp网站访问次数统计的几种方法