【问题标题】:Sketching objects near each other [closed]绘制彼此靠近的对象[关闭]
【发布时间】:2012-11-11 04:52:08
【问题描述】:

我想在屏幕上画出下图:

             |----|    sphere
             |----|
             / /
            / /
           / /         cylinder
          / /
         / / angle = 45
         | |
         | |
         | |           cylinder
         | |
         | |
         | |
 -----------           cylinder
 -----------

我的输出:

             / /
            / /
           / /         cylinder
          / /                        |-----|  sphere
         / / angle = 45              |-----|

我将画出顶部,即带有圆柱体的球体。我的代码如下,请大家看看有什么问题。

我试图找出为什么我的基元不靠近彼此的错误。但是,我找不到。我试图改变翻译的参数,但它不起作用。请帮忙

void object(void) {
    GLUquadraticObj *t = gluNewQuadratic();

    glTranslatef(-2.0f, -1.0f, 0.0f);
    gluCylinder(t, 0.1f, 0.1f, 0.3f, 32,32);
    gluSphere(t, 0.2f, 26, 13);

}

void display(void) {
    glLoadIdentity();
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
    object();
    glPopMAtrix();
    glPopMatrix();
    glutSwapBuffers();
    glFlush();        
}

void reshape(int w, int h) {
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60.0f, w/h, 1.0, 500.0f);
    glLoadIdentity();
}

【问题讨论】:

    标签: c++ c opengl graphics


    【解决方案1】:

    您需要在调用 gluCylinder 和 gluSphere 之间进行转换。在当前代码中,它们都将具有相同的转换,即它们将处于相同的位置/方向。试试:

    gluCylinder ( t, 0.1f, 0.1f, 0.3f, 32,32);
    glTranslatef ( -2.0f, -1.0f, 0.0f );
    gluSphere ( t, 0.2f, 26, 13 ) ;
    

    您调用 PopMatrix() 的次数也比调用 PushMatrix() 的次数多。

    【讨论】:

    • 你用你的观点编译代码了吗?我已经完成了,但它不起作用。
    • 不,重新排列这三行不应阻止代码编译。如果原始代码已编译,那么我的更改应该不会产生任何影响
    • 不,我知道它可以编译,我的意思是你运行代码
    • 对不起,我的错,不,我还没有编译它。我想这可能会给你一个快速的解决方案。调用 gluPerspective 后,尝试在 reshape 中删除 LoadIdentity()。在 display() 中,您还应该在应用任何转换之前将矩阵模式设置为模型视图
    • 对不起,我不会为你做你的任务。
    猜你喜欢
    • 2019-07-03
    • 2014-09-14
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    相关资源
    最近更新 更多