opengl 基本图元颜色变换后显示纹理位图本身的颜色

如果绘制基本图元时改变了颜色,则以后绘制纹理的颜色也可能会改变.如果想显示纹理本身的颜色,可用glColor3f( 1.0f,1.0f,1.0f);来进行还原.
示例如下:

//绘制基本图元
 glDisable( GL_TEXTURE_2D);//禁用纹理映射,以便画基本图形(如三角形)
 glColor3f( 1.0f,1.0f,0.0f);      // 颜色改成黄色/

 glPointSize( 4.0);//设置点的大小(要放在glBegin外)
 glBegin( GL_POINTS );
  glVertex3f( 5+g_pCamera->Get_Eye().Get_X()+ g_pCamera->Get_LookDir().Get_X()
   , g_pCamera->Get_Eye().Get_Y()+ g_pCamera->Get_LookDir().Get_Y(),
   g_pCamera->Get_Eye().Get_Z()+g_pCamera->Get_LookDir().Get_Z());     // 左上

 glEnd();
 glPointSize(1.0);//重设点颜色大小

 //绘制纹理位图
 glEnable(GL_TEXTURE_2D);
 glBindTexture(GL_TEXTURE_2D, g_uTexture[0]);    // 选择纹理

 //下面一行一定要,只有这样才能恢复颜色,即显示位图本身颜色,否则纹理位图的颜色可能会受前面图元颜色的影响
 glColor3f( 1.0f,1.0f,1.0f);

 glBegin(GL_QUADS);
  {
    float a= -2;
   // 前面
   glTexCoord2f(0.0f, 0.0f); glVertex3f(-a, -a,  a ); // 纹理和四边形的左下
   glTexCoord2f(1.0f, 0.0f); glVertex3f( a, -a,  a ); // 纹理和四边形的右下
   glTexCoord2f(1.0f, 1.0f); glVertex3f( a,  a,  a ); // 纹理和四边形的右上
   glTexCoord2f(0.0f, 1.0f); glVertex3f(-a,  a,  a ); // 纹理和四边形的左上
  }

 glEnd();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值