sbsy.net
当前位置:首页 >> opEngl鼠标点击 >>

opEngl鼠标点击

鼠标左键抬起,切换, void mouse(int button, int state, int x, int y){if( button == GLUT_LEFT_BUTTON && state == ...

一般是写代码自己判断的,首先你画的场景,你就肯定知道当前Project和View矩阵,然后你再知道鼠标点击的x,y坐标后,能计算出来一个空间直线. 用这个直线和 所有的立方体做碰撞检测(直线vs立方体) 这方面算法有点烦.那个函数还是蛮长的,你可以自己写...

如果要单纯的窗口内坐标的话 只需要GetCursorPos再减去窗口坐标就行了 如果是要OpenGL坐标的话 得用到OpenGL的选择模式

#include GLdouble pt[3]={0}; int st=0; void init() { glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT); } void display() { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glColor3f(1.0, 1.0, 1.0); glPointSize(2); if(st){ in...

不用吧你下个Logitech试试

首先在windows下获取鼠标按下/抬起/移动的消息 然后再进行判断 如果鼠标按下且移动 则进行glTranslatef/gluLookat操作 左键按下时使glRotatef里的变量相应改变。我是这样做的,不过右键也响应啦,呵呵,参考一下:) void ArrowKeys(int key, in...

void UnProject(float mouse_x,float mouse_y) //鼠标位置 { double modelview[16],projection[16]; int viewport[4]; float winX,winY,winZ; double object_x = 0,object_y = 0,object_z = 0; //3D坐标 glGetDoublev(GL_MODELVIEW_MATRIX, mode...

x,y为鼠标按下式,光标相对于窗口左上角的位置 void glutMotionFunc(void (*func)(int x, int y)); void glutPassiveMotionFunc(void (*func)(int x, int y)); 设置移动回调函数;设置当前鼠标移动函数 Func为注册的鼠标移动函数 x,y为鼠标按下式,...

这个需要进行点击测试,即输入一个二维屏幕坐标,返回一个三维点坐标,然后用两个三维点坐标画线。伪代码: Point2 p1, p2; Vector3 pt1 = HitTest(p1); Vector3 pt2 = HitTest(p2); glBegin( GL_LINE_STRIP); glVertex3d(pt1.x, pt1.y, pt1.z);...

先获取到鼠标左键或者右键点击时鼠标的坐标,然后再判断是否在你禁止的区域,然后对判断的结果做相应的处理,如果是就不响应这个点击。

网站首页 | 网站地图
All rights reserved Powered by www.sbsy.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com