glTranslatef不起作用

时间:2013-08-16 12:18:17

标签: opengl lwjgl

在我的项目中,我想渲染下雨,所以我使用粒子。

我的渲染方法:

public void draw(Camera camera) {
    glBegin(GL_POINTS);     
    glPushMatrix();

    glTranslatef(camera.getX(), camera.getEyeLevel(), camera.getY());

    glColor4f(0, 0, 0.8f, 0.1f);

    for(int i = 0; i < _currentParticlesCount; i++)
    {
        _particles[i].draw();
    }

    glPopMatrix();
    glEnd();
}

Rain particle init方法:

particle.setX(Utils.RANDOM.nextFloat() * RAIN_RADIUS * (Utils.RANDOM.nextBoolean() ? 1 : -1));
particle.setY(Utils.RANDOM.nextFloat() * RAIN_RADIUS);
particle.setZ(Utils.RANDOM.nextFloat() * RAIN_RADIUS * (Utils.RANDOM.nextBoolean() ? 1 : -1));

你知道我想将所有粒子转换到相机的位置 - 相对于玩家。 但是有一个问题,glTranslatef根本不起作用。 所以我在世界坐标系的开头看到了所有的粒子。

事实上,当我使用相同的原理绘制星星(粒子)时,glTranslatef可以正常工作。

星星渲染方法:

glDisable(GL_DEPTH_TEST);

glPushMatrix();     
glTranslatef(camera.getX(), camera.getEyeLevel(), camera.getY());

glBegin(GL_POINTS);

glColor3f(1, 1, 1);

for(int i = 0; i < STARS_COUNT; i++) {
    _starsArray[i].draw();
}

glEnd();

glPopMatrix();
glEnable(GL_DEPTH_TEST);

我做错了什么?

P上。 S.我使用OpenGL 1.1 LWJGL,Java OpenGL包装器(lwjgl.org)

1 个答案:

答案 0 :(得分:6)

glTranslatef无效,因为它介于glBegin / glEnd之间。

您可以使用glGetError()(eg)来更轻松地查找此类错误。

相关问题