PMG

Форумы по созданию игр
Текущее время: 14 июл 2026 13:31

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: glOrtho и рисование примитивов
СообщениеДобавлено: 04 дек 2006 19:13 
Не в сети
Любитель

Зарегистрирован: 26 янв 2006 20:32
Сообщения: 44
Откуда: Москва
Изучаю кн. "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);
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05 дек 2006 11:23 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Да действительно странно и необъяснимо, хотя обычно такие значения не назначают:
glOrtho(-1.0, 1.0, -1.0, 1.0, 1.0, 1000.0);

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: glOrto и рисование примитивов
СообщениеДобавлено: 05 дек 2006 12:32 
Не в сети
Любитель

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

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB