二维图像到二维屏幕的显示,对应屏幕坐标-创新互联

说明

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比云龙网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式云龙网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖云龙地区。费用合理售后完善,十多年实体公司更值得信赖。

    默认情况下,中心点在屏幕的中心,范围都是从[-1,1],所以物体的实际坐标映射到屏幕坐标需要一个转换过程,上文中描述到使用gluOrtho2D函数通过正投影,将物理坐标映射到屏幕坐标,但是坐标的原点在左下角,一般情况下,屏幕的原点都是从左上角开始,因此在上述的所有例子中,都需要重新计算Y轴的坐标,屏幕的高减去点Y轴分量。现在通过重新设置正射投影的左下角坐标和右上角的坐标,建立一一对应的关系,而不再需要进行任何的转换,类似于旋转相机,达到调整坐标系的作用

代码

#include

#include

#define WINDOWHEIGHT 480

#define WINDOWWIDTH  800

void myInit()

{

 glClearColor(1.0,1.0,1.0,0.0);

 glMatrixMode(GL_PROJECTION);

 glLoadIdentity();

 //gluOrtho2D(0.0, WINDOWWIDTH, 0.0, WINDOWHEIGHT);

 gluOrtho2D(0.0, WINDOWWIDTH , WINDOWHEIGHT, 0.0);

}

void myDisplay(void)

{

 glClearColor(1.0f, 1.0f, 1.0f, 0.0f);

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

 glFlush();

}

void myMouse(int button,int state,int x,int y)

{

 if(state==GLUT_DOWN)

 {

  glPointSize(10);

   glBegin(GL_POINTS);

    glColor3f(1.0f, 0.0f, 0.0f);

    //glVertex2f(x, WINDOWHEIGHT-y);

    glVertex2f(x,  y);

   glEnd();

  glFlush();

 }

}

int main(int argc, char* argv[])

{

 glutInit(&argc, argv);

 glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);

 glutInitWindowSize(WINDOWWIDTH, WINDOWHEIGHT);

 glutInitWindowPosition(100,150);

 glutCreateWindow("OpenGL 窗口1");

 glutDisplayFunc(&myDisplay);

 glutMouseFunc(&myMouse);

 myInit();

 glutMainLoop();

 return 0;

}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:二维图像到二维屏幕的显示,对应屏幕坐标-创新互联
文章来源:http://ybzwz.com/article/coedde.html