使用OpenGL三维场景下,在屏幕固定位置画图

废话闲叙述,直接上代码:
            //设置为2D投影场景
            glMatrixMode(GL_PROJECTION);
            glPushMatrix();
            glLoadIdentity();
            裁剪范围(左, 右, 下, 上)如果不希望变形,裁剪范围要和窗口成比例
            gluOrtho2D(-5, 5, -5, 5);
             glMatrixMode(GL_MODELVIEW);
             glPushMatrix();
             glLoadIdentity();
             //获取屏幕宽和高
            double width, height;
            g_pGLDC->GetWindow(width, height);
             m_centerY = height -70;
                m_centerX = width*0.5;
            //计算对应比例
              double scalX = 10 / width;
            double scalY = 10 / height;

            double originerX = (m_centerX - width*0.5)*scalX;
           //start: 绘制图片
             glEnable(GL_TEXTURE_2D);
             UINT32 textureWALL = tMap.find(textId)->second.textureValue;

             glEnable(GL_BLEND);
             glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
             glBindTexture(GL_TEXTURE_2D, textureWALL);

             glBegin(GL_QUADS);
             glTexCoord2f(0.0f, 0.0f);
             glVertex2d(originerX - m_Width*0.5*scalX, 5 - (m_centerY + m_Height*0.5)*scalY);
             glTexCoord2f(1.0f, 0.0f);
             glVertex2d(originerX + m_Width*0.5*scalX, 5 - (m_centerY + m_Height*0.5)*scalY);
             glTexCoord2f(1.0f, 1.0f);
             glVertex2d(originerX + m_Width*0.5*scalX, 5 - ((m_centerY - m_Height*0.5))*scalY);
             glTexCoord2f(0.0f, 1.0f);
             glVertex2d(originerX - m_Width*0.5*scalX, 5 - (m_centerY - m_Height*0.5)*scalY);
             glEnd();
             //end:结束绘制
            // m_centerY = height - 70;
             // glRotated(-GeoStateCurrent::GetInstance()->m_carDirection + 90, 0, 0, 1);
             glDisable(GL_BLEND);
             glDisable(GL_TEXTURE_2D);
           //还原场景
             glMatrixMode(GL_MODELVIEW);
             glPopMatrix();
             glMatrixMode(GL_PROJECTION);
         glPopMatrix();
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值