游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2157|回复: 3

望指点迷津啊!opengl中旋转变换顺序问题

[复制链接]

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-7-20 11:30:00 | 显示全部楼层 |阅读模式
就是这个程序。它演示了太阳系中地月系与太阳之间的运动关系:月球饶地球转,整个地月系饶太阳转,所有的星球都自转。
   以下是控制运动的主要代码

    procedure TfrmMain.RenderScene;
    begin
      glEnable(GL_CULL_FACE);
      glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT);
      glLoadIdentity;
      glTranslatef(0,0,-110);
      glRotatef(yDeg,0,1,0);
      glRotatef(xDeg,1,0,1);

      RenderLights;//光照处理

      //绘制太阳
      glColor3ub(255,100,64);
      glPushMatrix;
        glRotate(SunSelfAng,0,1,0);
        DrawSphere(10);
      glPopMatrix;
      glPushMatrix;//推入当前矩阵
      //绘制地月系
        glRotatef(EarthCommonAng,0,1,0);
        glTranslatef(50,0,0);
        glPushMatrix;//绘制地球
          glRotatef(EarthSelfAng,0,1,0);
          glColor3ub(20,50,255);
          DrawSphere(5);
        glPopMatrix;
        glPushMatrix;//绘制月球
          glColor3ub(200,200,200);
          glRotatef(MoonAng,0,1,0);
          glTranslatef(10,0,0);
          glRotatef(MoonSelfAng,0,1,0);
          DrawSphere(2);
        glPopMatrix;
      glPopMatrix;//弹出矩阵
      SwapBuffers(wglGetCurrentDC);
    end;

拿地球来说吧:渲染的顺序应该是先自转,再平移,再公转的啊。 可程序中的顺序恰好相反
这是怎么回事呢? 望各位大侠不吝赐教啊

程序效果图:

18

主题

84

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2006-7-20 12:43:00 | 显示全部楼层

Re:望指点迷津啊!opengl中旋转变换顺序问题

opengl中的变换 是先乘下面的矩阵进行变换 然后再乘上面的矩阵

所以要倒一下变换矩阵的顺序

18

主题

84

帖子

84

积分

注册会员

Rank: 2

积分
84
发表于 2006-7-20 12:47:00 | 显示全部楼层

Re:望指点迷津啊!opengl中旋转变换顺序问题

楼主用的也是控制台程序吧
问两个问题

1.如何给这个窗口设置标题栏的icon图标的

2.怎样禁止最大化功能,也禁止鼠标拖放改变窗口大小呢

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2006-7-20 14:55:00 | 显示全部楼层

Re:望指点迷津啊!opengl中旋转变换顺序问题

谢谢楼上的 终于想通了
你提的问题不好意思 这个程序不是我做的 是在网上找的
我学opengl才两三天
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 00:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表