OPENGL地球贴图旋转

来源:百度知道 编辑:UC知道 时间:2024/07/02 22:40:11
旋转部分:
case 's':
fRotateAngle[0] += 4.0;
if(fRotateAngle[0] >= 360.0)
{
fRotateAngle[0] -= 360.0;
}
glutPostRedisplay();
break;
其他六个方向类似。但是不知道为什么地球的xyz轴也跟着旋转。就是说先左转45度之后,用户上下旋转会看到侧旋的球而不是面向你滚来或滚远方向运动的球。

另外,我贴了张小bmp就正确显示,但帖大的(2048*1024)的6m bmp就变成了黑白,同学试了就是彩色的,我百思不得其解。

void reshape(int w, int h)
{
height = w, width = h;
glViewport(0, 0, (GLsizei)w, (GLsizei)h);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)w/(GLfloat)h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0, 0.0, -2.0);
}

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

你的第一个问题应该不难
第二个问题
不同的显卡支持的最大纹理不一样
你用下面这个查查看
glGetIntegerv(GL_MAX_TEXTURE_SIZE,&size)

55555555我英文不好 但是好想要点分

其他我不知道,我只知道贴图的像素数要是偶数的,奇数的会出错。
你贴的图太大的话是不是他开不了那么大的数组,纹理存不上吧。

关于用作纹理的图像我想有几点十分重要,并且您必须明白。此图像的宽和高必须是2的n次方;宽度和高度最小必须是64象素;并且出于兼容性的原因,图像的宽度和高度不应超过256象素。如果您的原始素材的宽度和高度不是64,128,256象素的话,使用图像处理软件重新改变图像的大小。可以肯定有办法能绕过这些限制

1. 第一个问题, 因为只看到你设定了一个旋转角度, 但是没有看到实际怎么应用到 matrix 里, 所以无法回答.
2. 第二个问题, 会不会因为你的显卡不支援不是正方的图? 意思是图必须为 2048*2048 或是 1024*1024 的这
种格式.