JOGL - open GL - удерживая часть мира в неподвижном состоянии, перемещая остальных - PullRequest
0 голосов
/ 27 апреля 2011

Я новичок в JOGL и работаю над игрой. У меня есть ракета, звезды на заднем плане и планеты. Я хочу, чтобы ракета оставалась неподвижной в нижней части экрана, чтобы была нажата кнопка GO, а затем планеты начали падать, чтобы ракета избежала.

Я продолжаю ударять, планеты падают (через перевод), а ракета тоже падает. Я знаю, почему это происходит с движущейся камерой, поэтому весь мир движется. Я пытался использовать pushMatrix и popMatrix, но мне не повезло.

т.е.

if (goButtonPressed)  
{
    //gl.glTranslatef(0.0f,0.3f,0f);   // this line just keeps the whole thing still  
    drawRocket(gl);                    // I was trying to 'undo' the translation  
    gl.glPushMatrix();  
    gl.glMatrixMode(GL.GL_PROJECTION);  
    gl.glTranslatef(0.0f, -0.3f, 0f);  
    gl.glPopMatrix();  
}

Возможно ли то, что я пытаюсь сделать в opengl? Я делаю это слишком сложно?

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

Вместо того, чтобы полагаться на матрицу проекции для хранения состояния ваших ракет, как насчет сохранения этой информации в вашем собственном коде и последующей передачи абсолютных координат в JOGL?Затем обновление позиции объекта может быть выполнено с помощью более очевидного фрагмента кода, такого как rocket.y += dy;.

. Как небольшая часть, матрица проекции не предназначена для использования для пространственных преобразований.Вместо этого используйте GL_MODELVIEW, чтобы избежать незначительных проблем в будущем.

0 голосов
/ 27 апреля 2011

Не совсем ответ на ваш вопрос, но вы должны взглянуть на JMonkeyEngine, если вы хотите создать игру с opengl на Java.

http://jmonkeyengine.com/

То, что вы пытаетесь сделать, безусловно, возможно с opengl и довольно легко сделать с JMonkeyEngine. У них есть множество учебных пособий и тому подобное на их сайте.

...