二维图像到二维屏幕的投影用例-创新互联

说明

专注于为中小企业提供网站建设、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业下城免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

在默认的2D渲染中,渲染的X,Y轴的范围都是从[-1, 1],屏幕的中心点(0,0),所以鼠标点击的坐标,必须转换成世界地理坐标系,在2D环境下,默认Z轴坐标为0.0

假设屏幕宽800,高4800

屏幕坐标 地理坐标

左上角 0,0 -1,1

左下角  0,480 -1,-1

右上角  800,0      1,1

右下角  800,480     1,-1

现在通过gluOrtho2D函数将二维图像到二维屏幕上的投影,将坐标移动到左下角,方向刚好和屏幕坐标的Y轴相反

代码

#include <gl/glut.h>

#include <Windows.h>

#define WINDOWHEIGHT 480

#define WINDOWWIDTH  800

void myInit()

{

 glClearColor(1.0,1.0,1.0,0.0);

 glLineWidth(3.0);

 glMatrixMode(GL_PROJECTION);

 glLoadIdentity();

 gluOrtho2D(0.0, WINDOWWIDTH, 0.0, WINDOWHEIGHT);

}

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);

   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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

网站标题:二维图像到二维屏幕的投影用例-创新互联
浏览地址:https://www.cdcxhl.com/article8/shcop.html

成都网站建设公司_创新互联,为您提供企业网站制作搜索引擎优化虚拟主机网站内链营销型网站建设网站改版

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

搜索引擎优化