【问题标题】:JOGL - translate GL_QUADSJOGL - 翻译 GL_QUADS
【发布时间】:2013-02-20 23:57:17
【问题描述】:

在 JOGL 中,我尝试使用 GL_QUADS(即整个对象的不同组件)创建一些 3D 形状,到目前为止这样做很好,但我不知道如何转换形状,必须有一种方法这样做,但我对 GL_QUADS 不是很熟悉,所以我不完全确定如何去做。编辑gl.glVertex3f 只会导致形状大小不同,这似乎是我唯一可以编辑的东西,是否可以给 GL_QUAD 一个变量名?

【问题讨论】:

    标签: java opengl jogl


    【解决方案1】:

    你可以使用glTranslatef函数:

    // render the shape
    gl.glTranslatef(5.0f, 0.0f, 0.0f); // translate along x, y, z
    // render the shape - you will now have two shapes next to each other

    【讨论】:

    • 感谢您的回复,我在询问之前尝试过,但它没有任何效果?是因为我有public void display(GLAutoDrawable drawable) { 和很多glBegin 吗?
    • 把命令放在glBegin...glEnd里面是没有效果的。它必须在glBegin 之前调用。在glBegin...glEnd:glprogramming.com/red/chapter02.html 中只有少数 JOGL/OpenGL 命令有效,如果这没有帮助,最好能发布您的源代码。
    • 把它放在glBegin 之前完美运行,非常感谢!
    【解决方案2】:

    调用gl.glTranslatef(1.0f, 0.0f, 0.0f); 将应用于堆栈中的当前矩阵,这实际上意味着您从那时起绘制的任何内容都将在 x 轴上出现 1 个单位,距离之前的矩阵所在的位置(可能是您的情况的原点) .

    我明白为什么它看起来令人困惑,而不是创建形状然后移动它(不能完成,它已经被绘制),你会想要翻译然后 画出你的形状。

    例如:

    gl.glPushMatrix();
        gl.glTranslatef(1.0f, 0.0f, 0.0f);
        gl.glBegin(GL2.GL_QUADS);
            // draw some vertices here
        gl.glEnd();
    gl.glPopMatrix();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-28
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 2011-12-26
      相关资源
      最近更新 更多