gpt4 book ai didi

c++ - C++ : Same code bevahes differently even on the same computer 上的 OpenGL VS2008

转载 作者:行者123 更新时间:2023-11-28 03:45:22 24 4
gpt4 key购买 nike

我有两个完全相同的 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 Up\n");
zoom += 0.1;
}
else if (mod == GLUT_ACTIVE_CTRL && button == GLUT_WHEEL_DOWN ){
printf("Wheel Down\n");
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 here\n");
zrotation -= (5*(z - oldZ)); // about x-axis
//translation_z = translation_z - 0.1;
}


}
else if (state == GLUT_DOWN) {
//printf("Glut Down before z processing\n");

if (button == GLUT_LEFT_BUTTON){
cursorX = x;
cursorY = y;
mode = SELECT;
//printf("Left is down\n");
}

oldX = x;
oldY = y;
}
}

`

我上传了两个 project here .

最佳答案

源和项目设置看起来完全相同。我看不到任何添加的包含路径,你在两个项目中都有本地的 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 的 printf 行,这是否是您如何判断一个人不认识轮子的方式?

关于c++ - C++ : Same code bevahes differently even on the same computer 上的 OpenGL VS2008,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7852563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com