PMG
http://forum.pmg.org.ru/

glOrtho и рисование примитивов
http://forum.pmg.org.ru/viewtopic.php?f=1&t=1084
Страница 1 из 1

Автор:  VicTeam [ 04 дек 2006 19:13 ]
Заголовок сообщения:  glOrtho и рисование примитивов

Изучаю кн. "OpenGL Game Development" by Chris Seddon.
На стр. 74 автор указывает в тексте параметры для glOrtho:
left=-200, right=200, bottom=-200, top=200, near=-2000, far=2000.
Однако в коде использует для top значение -200. И все у него работает! А как раз "правильные" (с моей точки зрения) значения
bottom=-200 и top=200 не работают. Не понимаю!? Ведь значения для y-координаты примитивов от -1 до +1.

Детали:

Текст:
I’ve set both the left and bottom planes to –200, the right and top to 200, the nearest plane to –2000, and the farthest plane to 2000. These values allow OpenGL to render primitives to the screen that are between the positions –200 and 200.

Код:
void ResizeGLWindow(long width, long height)
{
glViewport(0, 0, (GLsizei) width, (GLsizei)height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-200, 200, -200, -200, -2000,2000);
glMatrixMode(GL_MODELVIEW);
}


/* SetGLDefaults *****/
void SetGLDefaults()
{
glEnable (GL_DEPTH_TEST);
glDisable (GL_CULL_FACE);

glClearColor (0.6f, 0.6f, 0.6f, 1.0f);
}


/* Render ****/
void Render()
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glLoadIdentity();
glPushMatrix();
glTranslatef (0.0f, 0.0f, 0.0f);


glBegin (GL_TRIANGLES);
glVertex3f (0.0f, 0.0f, 0.0f);
glVertex3f (0.0f, 1.0f, 0.0f);
glVertex3f (1.0f, 1.0f, 0.0f);
glEnd();


glBegin (GL_QUADS);
glVertex3f (0.05f, -0.05f, 0.0f);
glVertex3f (0.95f, -0.05f, 0.0f);
glVertex3f (0.95f, -0.95f, 0.0f); glVertex3f (0.05f, -0.95f, 0.0f);
glEnd();


glBegin (GL_POLYGON);
glVertex3f (-0.25f, -0.25f, 0.0f);
glVertex3f (-0.50f, -0.125f, 0.0f);
glVertex3f (-0.75f, -0.25f, 0.0f);
glVertex3f (-0.875, -0.5f, 0.0f);
glVertex3f (-0.75f, -0.75f, 0.0f); glVertex3f (-0.50f, -0.875f, 0.0f); glVertex3f (-0.25f, -0.75f, 0.0f);
glVertex3f (-0.125f, -0.5f, 0.0f);
glEnd();


glBegin (GL_LINES);
glVertex3f (-0.25f, 0.25f, 0.0f);
glVertex3f (-0.75f, 0.75f, 0.0f); glEnd();

glPopMatrix();

SwapBuffers (raster.hDC);
}

Автор:  MagicWolf [ 05 дек 2006 11:23 ]
Заголовок сообщения: 

Да действительно странно и необъяснимо, хотя обычно такие значения не назначают:
glOrtho(-1.0, 1.0, -1.0, 1.0, 1.0, 1000.0);

Автор:  VicTeam [ 05 дек 2006 12:32 ]
Заголовок сообщения:  glOrto и рисование примитивов

Немного поиграл с параметрами glOrtho и glVertex3f и пришел
к выводу, что внутри glOrtho встроена защита:
если в какой-либо паре параметров glOrtho -
left,right; bottom,top, near,far встречаются одинаковые значения,
то внутри они все заменяются на -1,1; -1,1; -1,1.
Некоторая логика для отладки в этом есть.

Считаю тему закрытой.

С уважением, Виктор.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/