Вопросы рендеринга LWJGL / OpenGL (Рендеринг по центру / Полигоны изгиба) - PullRequest
1 голос
/ 08 января 2012

Итак, я создаю простой движок 3D-рендеринга в LWJGL, и у меня возникают проблемы с тем, что, когда я отступаю от объекта, он перемещается влево и вверх (к 0,0), когда мне действительно нужноэто для перехода к screenResX / 2, screenResY / 2 (возможно, 0, я не знаю).Есть ли способ, которым я могу установить какую-то переменную, которая позволит ей исчезать по направлению к центру?

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

Заранее спасибо за вашу помощь, это мой первый 3dдвигатель, и я довольно невежественный.

1 Ответ

0 голосов
/ 09 января 2012

Итак, по первому вопросу: масштабирование всегда происходит вокруг начала координат. Это означает, что вы должны перевести ваш объект в начало координат, масштабировать его, а затем перевести его в пункт назначения. Это лучше объяснить здесь: OpenGL: масштаб, затем перевод? и как?

Но основы примерно такие (из связанного вопроса):

//this moves the scaled 
glTranslatef(destCenter.x, destCenter.y, 0.0);
//scale to the desired factor
glScalef(scaleX, scaleY, 0.0);
//move the center of the scaling operation into the origin
glTranslatef(sourceCenter.x * -1.0, sourceCenter.y * -1.0, 0.0);   

Я все еще не совсем понимаю ваш второй вопрос, но я предполагаю, что вы имеете в виду, что вы хотите, чтобы что-то было нарисовано в перспективе, а не ортогонально. Взгляните на gluPerspective(...) или glFrustum(...) вместо glOrtho(...).

...