glFrustum () в OpenGL ES: почему фигуры имеют одинаковый размер? - PullRequest
1 голос
/ 21 сентября 2011

Я пытаюсь понять перспективный вид в OpenGL. Я пытаюсь визуализировать два одинаковых треугольника, но с разными координатами z, поэтому я предполагаю, что они должны появляться в разных размерах. Вот мой код:

CUSTOMVERTEX Vertices[] =
{
    { 0.5f,  1.0f, 0.5f, 1.0f, 0.0f, 0.0f, 1.0f }, // x, y, z, color
    { 0.0f, 0.0f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f },
    { 1.0f, 0.0f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f },
};

и для рисования

glDrawArrays(GL_TRIANGLES,0, 3);
glTranslatef(0.0f,-1.0f,-1.5f);
glDrawArrays(GL_TRIANGLES,0, 3);

и вот как я инициализирую некоторые атрибуты

glShadeModel(GL_SMOOTH);
glClearDepthf(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable(GL_CULL_FACE);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustumf(-1.0f, 1.0f, -1.0f, 1.0f, 0.0f, 100.0f);
glMatrixMode(GL_MODELVIEW);                   
glLoadIdentity();

но треугольники появляются в одном размере, просто в разных местах, как я перевёл Y. Может кто-нибудь, пожалуйста, объясните мне?

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Вы не можете использовать 0.0 для значения ближней Z перспективной проекции.Это должно быть положительное число больше нуля.Предпочтительно порядка 1,0 или около того.

0 голосов
/ 22 сентября 2011

Как сказал Николь, вы должны использовать числа больше 0 для построения фруструма. Я настоятельно рекомендую вам прочитать эту статью , чтобы понять, почему это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...