OpenGL VS2008在c++:相同的代码行为不同,即使在同一台计算机上
OpenGL VS2008 on C++: Same code bevahes differently even on the same computer
我有两个完全相同的代码OpenGL c++,在不同的项目中使用VS2008编译,但是当我编译它们时,它的行为不同。其中一个能识别if ( mod == GLUT_ACTIVE_CTRL && button == GLUT_WHEEL_UP )
,另一个不能。
void mouse(int button, int state, int x, int y) {
int mod = glutGetModifiers();
mouseState = state;
mouseButton = button;
double modelview[16], projection[16];
int viewport[4];
float z = 0 ;
/*Read the projection, modelview and viewport matrices
using the glGet functions.*/
glGetIntegerv( GL_VIEWPORT, viewport );
glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
//glGetDoublev( GL_PROJECTION_MATRIX, projection );
//Read the window z value from the z-buffer
glReadPixels( x, viewport[3]-y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z );
// Used for wheels, has to be up
if (state == GLUT_UP ) {
if ( mod == GLUT_ACTIVE_CTRL && button == GLUT_WHEEL_UP ){
printf("Wheel Upn");
zoom += 0.1;
}
else if (mod == GLUT_ACTIVE_CTRL && button == GLUT_WHEEL_DOWN ){
printf("Wheel Downn");
zoom -= 0.1;
}
else if (mod == GLUT_ACTIVE_ALT && button == GLUT_WHEEL_UP) {
//printf("Z++n");
translation_z = translation_z + 0.1;
//printf("Z = %f", translation_z);
}
else if (mod == GLUT_ACTIVE_ALT && button == GLUT_WHEEL_DOWN) {
//printf("Z--n");
translation_z = translation_z - 0.1;
}
else if (mod == GLUT_ACTIVE_SHIFT && button == GLUT_WHEEL_UP) {
//printf("Shift Wheel Up. Z axis rotation goes here.n");
zrotation += (5*(z - oldZ)); // about x-axis
}
else if (mod == GLUT_ACTIVE_SHIFT && button == GLUT_WHEEL_DOWN) {
//printf("Shift Wheel Down. Z Axis rotation goes heren");
zrotation -= (5*(z - oldZ)); // about x-axis
//translation_z = translation_z - 0.1;
}
}
else if (state == GLUT_DOWN) {
//printf("Glut Down before z processingn");
if (button == GLUT_LEFT_BUTTON){
cursorX = x;
cursorY = y;
mode = SELECT;
//printf("Left is downn");
}
oldX = x;
oldY = y;
}
}
和我上传的两个项目在这里
源设置和项目设置似乎完全相同。我没有看到任何添加的include路径,你在两个项目中都有opengl的本地副本吗?
我现在唯一能想到的是你来源的评论…
//Use patched version of GLUT (http://www.realmtech.net/opengl/glut.php) in case the wheel interaction does not work.
1)这听起来可能与你正在遇到的问题有关。
2)你是否在一个项目中使用了补丁版本,而在另一个项目中没有使用?
编辑:在其中一个项目中,你把wheel down和wheel up的打印行注释掉了,这是你如何判断一个人不认识wheel的方法吗?
我发现了这个问题,在这个项目中,不能识别轮子的上下状态(尽管它应该),我包括:
freeglut。自由glut32。自由opengl32。自由user32.lib
这可以通过只包含以下库来解决:
opengl32。自由user32.lib
感谢@melak47建议检查项目设置
相关文章:
- 我的 SDL2 程序需要哪些二进制文件,以便它在另一台未安装 SDL2 的计算机中工作
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 另一台电脑上的Visual Studio C++项目无法生成
- Homebrew OS X OpenCV - 在另一台Mac上运行时寻找dylib
- 当我在支持 avx2 的机器上编译并在另一台仅支持 avx 的机器上运行二进制文件时会发生什么?
- 如何在另一台未安装 Visual Studio 的计算机中使用由 Visual Studio 生成的 dll
- 在另一台计算机中运行 GTKMM 代码时未定义的符号
- 将Visual Studio C 构建的中间文件移至另一台计算机
- 为什么我的Glreadpixels程序在另一台计算机中不起作用
- 在另一台计算机MFC C++上不进入while循环
- 我可以将TokenPrivileges数组从一台计算机复制到另一台计算机吗
- 从另一台计算机运行opencv可执行文件
- 通过网络直接从另一台计算机的内存中读取文件
- fwrite在一台计算机上浮动,在另一台计算机中浮动
- 在C++中使用 zeromq 将序列化的 Mat 对象发送到另一台计算机
- 一台计算机中出现 msvs 2013 错误 C2057,另一台计算机中没有错误。这是怎么回事?
- 使用蓝牙将陀螺仪数据传输到另一台计算机
- 使用脉冲编码调制从一台计算机到另一台计算机的数据传输
- 如何在另一台计算机(linux)上使用OpenCV运行c++库
- 在局域网上选择一台计算机作为服务器