游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1875|回复: 2

求助~编一个会旋转的三维圆环

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-5-11 21:09:00 | 显示全部楼层 |阅读模式
我是OpenGL菜鸟,有问题求助各位高手:问题是编一个会旋转的三维圆环,不知道为什么怎么都弄不出来。





#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <gl/glut.h>
#include <windows.h>

void DrawTorus()
    {
    GLfloat outerRadius = 0.35f;
    GLfloat innerRadius = 0.15f;
    GLint   slices = 40;
    GLint   stacks = 20;
    glutWireTorus(outerRadius, innerRadius,slices,stacks );

   
    }
        
        

void RenderScene(void)
    {
    glPushMatrix();
    glRotatef (90.0f,0.0,0.0,1.0);   
    DrawTorus();
    glPopMatrix();

glutSwapBuffers();
   
   
    }

void SetupRC()
    {
  
    glClearColor(0.0f, 0.0f, .50f, 1.0f );
         

    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

    }

void TimerFunction(int value)
    {

    glutPostRedisplay();
    glutTimerFunc(33,TimerFunction, 1);
    }

void ChangeSize(int w, int h)
    {
    GLfloat fAspect;

   
    if(h == 0)
        h = 1;

    glViewport(0, 0, w, h);
        
    fAspect = (GLfloat)w / (GLfloat)h;

   
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

   
    gluPerspective(35.0f, fAspect, 1.0f, 50.0f);
        
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

int main(int argc, char* argv[])
    {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(800,600);
    glutCreateWindow("Manual Transformations Demo");
   
    glutDisplayFunc(RenderScene);
    glutReshapeFunc(ChangeSize);
    SetupRC();
    glutTimerFunc(33, TimerFunction, 1);

    glutMainLoop();

    return 0;
    }


谢谢各位高手~万分感激

[em7]

5

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2006-5-12 15:05:00 | 显示全部楼层

Re: 求助~编一个会旋转的三维圆环

在 ChangeSize 函数里面的最后 添加一个 gluLookAt(0.0,0.0,5.0,0.0,0.0,0.0,0.0,1.0,0.0);试试看,因为你画的东西在z=0面上,视点也在该面上,当然看不到了。所以要把视点向外移一定的距离,你可以试着调一下,不一定是移动 5.0,其他的数值也可,就是看到的物体大小不同而已

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2006-5-12 17:53:00 | 显示全部楼层

Re: 求助~编一个会旋转的三维圆环

void RenderScene(void)
    {
    glPushMatrix();
    glTranslatef(0,0,-5);   //加上这个
    glRotatef (90.0f,0.0,0.0,1.0);
    DrawTorus();
    glPopMatrix();
    glutSwapBuffers();
    }
看一看视图转换和模型转换资料.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-24 11:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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