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

opEngl鼠标点击

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

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

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

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为鼠标按下式,...

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

(X,Y,Z)//将三角形的位置坐标,定义为全局变量。 glutMotionFunc(motion); //写在main()里,和glutspecialkeys()等函数一样的用法,他的作用是跟踪鼠标的位置,返回鼠标//在当前界面程序界面的(x,y)坐标。 void motion(int x, int y) { X=...

#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...

两个方法都可以, 方法一: glRotaef(x,y,z); pushMatrix(); drawObject(); popMatrix(); 在鼠标Move事件中改变x,y,z值 方法二 gllookat(x,y,z,objectx,objecy,objectz,0,1,0) 在鼠标Move事件中改变x,y,z值,要用圆周函数,以视点对象为中心。

2D向3D转换。逆变换 void mouse(int button, int state, int x, int y) { GLint viewport[4]; GLdouble mvmatrix[16],projmatrix[16]; GLint realy; GLdouble wx,wy,wz; switch(button) { case GLUT_LEFT_BUTTON: if(state == GLUT_DOWN) { glGe...

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