资源简介
在VC++环境中调用opengl函数,在opengl窗口中捕捉鼠标位置,并将坐标位置显示在窗口左下角

代码片段和文件信息
#pragma once
#include
#include
#include“glut.h“
//定义全局变量记录当前鼠标的位置信息
static int initWidth initHeight;
static int mousex mousey;
//鼠标移动回调函数
void mousemove(int x int y)
{
mousex = x;
mousey = glutGet(GLUT_WINDOW_HEIGHT) - y;
glutPostRedisplay();
}
/*-------------------------------------------------------------------*//*!
* \摘要 在窗口中指定位置指定大小的矩形内显示鼠标的当前位置
* \参数 x: 指定矩形的左小角的x坐标
y: 指定矩形的左小角的y坐标
width: 指定矩形的宽度
height: 指定矩形的高度
win_width: 窗口的宽度
win_height: 窗口的高度
* \返回值
* \标注 当前光标的坐标为:mousex mousey
*//*-------------------------------------------------------------------*/
void put_coordinate(float x float y float width float height float win_width float win_height)
{
GLfloat w_ratio = win_width / 330;
GLfloat h_ratio = win_height / 220;
//正投影
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-win_width/2 win_width/2 -win_height/2 win_height/2 1.0 -1.0);
glViewport(00widthheight);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(x-win_width/2 y-win_height/2+110*h_ratio 0); //将要显示的文字沿y轴上移110个单位(像素)
glScalef(w_ratio h_ratio 1); //将要显示的文字的xy坐标大小缩放至原来的0.1倍
//生成文字的固有大小为(330220)
glutStrokeCharacter(GLUT_STROKE_ROMAN 88); //输入要显示文字“X”的ASC码值
glutStrokeCharacter(GLUT_STROKE_ROMAN 58); //输入要显示文字“:”的ASC码值
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousex/100)); //计算当前位置的x坐标的百位数字
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousex%100)/10); //计算当前位置的x坐标的十位数字
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousex%10)); //计算当前位置的x坐标的个位数字
glLoadIdentity();
glTranslatef(x-win_width/2 y-win_height/2 0);
glScalef(w_ratio h_ratio 1); //将要显示的文字的xy坐标大小缩放至原来的0.1倍
glutStrokeCharacter(GLUT_STROKE_ROMAN 89); //输入要显示文字“Y”的ASC码值
glutStrokeCharacter(GLUT_STROKE_ROMAN 58); //输入要显示文字“:”的ASC码值
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousey/100)); //计算当前位置的y坐标的百位数字
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousey%100)/10); //计算当前位置的y坐标的十位数字
glutStrokeCharacter(GLUT_STROKE_ROMAN 48+(mousey%10)); //计算当前位置的y坐标的个位数字
glPopMatrix();
}
//将用户坐标映射到窗口坐标;当窗口的大小改变时,该函数会被调用
void ChangeSize(GLsizei w GLsizei h)
{
glViewport(00wh);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//正投影
GLfloat aspectRatio = (GLfloat)w / (GLfloat)(h+1) ; //h+1防止除数为零
if(w<=h)
{
int windowWidth = 100;
int windowHeight = 100/aspectRatio;
glOrtho(-100.0 100.0 -windowHeight windowHeight 1.0 -1.0);
}
else
{
int windowWidth = 100*aspectRatio;
int windowHeight = 100;
glOrtho(-windowWidth windowWidth -100.0 100.0 1.0 -1.0);
}
}
void RenderScene( void )
{
//设置背景颜色
glClearColor( 0.0f 0.5f 0.0f 1.0f );
//用当前清除颜色清除
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 40960 2007-12-11 18:25 zuobiao\debug\zuobiao.exe
文件 169984 2007-06-19 13:02 zuobiao\glut.dll
文件 21440 2007-12-10 11:56 zuobiao\glut.h
文件 79654 2007-06-19 13:02 zuobiao\glut.lib
文件 169984 2007-06-19 12:58 zuobiao\glut32.dll
文件 79898 2007-06-19 12:58 zuobiao\glut32.lib
文件 4099 2007-12-11 18:25 zuobiao\Simple.cpp
文件 346 2007-12-11 16:03 zuobiao\zuobiao.sln
..A..H. 12288 2007-12-11 18:34 zuobiao\zuobiao.suo
文件 3970 2007-12-11 17:55 zuobiao\zuobiao.vcproj
文件 1413 2007-12-11 18:25 zuobiao\zuobiao.vcproj.ACTIONS.yyuan.user
目录 0 2009-04-22 12:32 zuobiao\debug
目录 0 2009-04-22 12:32 zuobiao
----------- --------- ---------- ----- ----
584036 13
相关资源
- VC++ 多线程文件读写操作
- 移木块游戏,可以自编自玩,vc6.0编写
- VC++MFC小游戏实例教程(实例)+MFC类库
- VC++实现CMD命令执行与获得返回信息
- 安卓c语言开发SDL2+opengles
- 交互式计算机图形学 第六版 OpenGL源代
- VC++基于OpenGL模拟的一个3维空间模型
- 基于VC++的SolidWorks二次开发SolidWorks
- 派克变换VC++源码(附文档)
- VC++ 串口
- VC++ 大富翁4_大富翁游戏源码
- VC++ 摄像头视频采集与回放源程序
- 转 VC++ 实现电子邮件(Email)发送
- opengl绘制汽车.cpp
- 基于MFC的VC++仿QQ浏览器源码(雏形)
- VC++ 服务程序编写及安装与卸载
- VC++6.0番茄西红柿VAXvirsual assist X完美破
- 基于改进的fcm算法的图像分割vc++
- VC++6.0 绿色版,免安装,非常好用。
- Microsoft Visual C++ 2005 Redistributable Pack
- VC++MFC课程设计的学生成绩管理系统
- 大智慧365DLL插件设计
- VC++6.0汉化包
- VC++完整商业界面源码(再上传)
- VC++编程技术600个大型项目源码.rar
- VC++实现RSA加密算法
- VC++ 中国象棋经典游戏源代码
- 郁金香VC++游戏辅助视频教程
- C语言进阶源码---基于graphics实现图书
- 摄影测量相对定向VC++程序
评论
共有 条评论