Вопрос о Win32 и Opengl
|
|
clidi | Дата: Понедельник, 13 Февраля 2012, 19:12 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Как сделать так, чтоб при изменении размеров окна фигуры в окне не менялись? Помоему там как то надо делить ширину на высоту окна и что то потом еще...
|
|
| |
Rorschach | Дата: Понедельник, 13 Февраля 2012, 19:17 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Quote (clidi) Как сделать так, чтоб при изменении размеров окна фигуры в окне не менялись? Помоему там как то надо делить ширину на высоту окна и что то потом еще... Они меняются только тогда, когда ты их сам меняешь.
Never compromise. Not even in the face of Armageddon.
|
|
| |
clidi | Дата: Понедельник, 13 Февраля 2012, 19:20 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Rorschach, Нет, они автоматически больше или меньше становятся, в зависимости от увеличения или уменьшения окна. Нужно как то считать через соотношение сторон, но не знаю как именно.
|
|
| |
Rorschach | Дата: Понедельник, 13 Февраля 2012, 19:23 | Сообщение # 4 |
участник
Сейчас нет на сайте
| clidi, код, имеющий это волшебное свойство, в студию. Я, похоже, чего-то не понимаю.
Never compromise. Not even in the face of Armageddon.
Сообщение отредактировал Rorschach - Понедельник, 13 Февраля 2012, 19:23 |
|
| |
BIOMSoft | Дата: Понедельник, 13 Февраля 2012, 19:23 | Сообщение # 5 |
участник
Сейчас нет на сайте
| Это ты что-то такое говориш ^-^ Код выложы... ты наверное в коде напартачил =\
Если брать урок по опенГЛ от HeHe... там все норм, и когда меняешь размер окна все норм...
Перевод UDK - Завершено 30% Перевод UDK документации - Завершено 2%
|
|
| |
clidi | Дата: Понедельник, 13 Февраля 2012, 19:29 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Есть функция reshape, которая вызывается в WndProc при изменении окна(WM_SIZE). Еще она вызывается при создании окна. Она выглядит так: Code void reshape(int width, int height) { screenWidth=width; screenHeight = height; glViewport(0,0,width,height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-50,50,-50,50); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }
|
|
| |
BIOMSoft | Дата: Понедельник, 13 Февраля 2012, 19:31 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Я не понимаю чего у тебя размер окна в функции где создается сфера? Оо
Перевод UDK - Завершено 30% Перевод UDK документации - Завершено 2%
|
|
| |
clidi | Дата: Понедельник, 13 Февраля 2012, 19:33 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| BIOMSoft, На название не смотри, она может называться хоть как.
|
|
| |
BIOMSoft | Дата: Понедельник, 13 Февраля 2012, 19:38 | Сообщение # 9 |
участник
Сейчас нет на сайте
| Мне кажется или у тебя размер окна и координаты обьекта вместе?
Может я просто не понемаю =\
Перевод UDK - Завершено 30% Перевод UDK документации - Завершено 2%
|
|
| |
clidi | Дата: Понедельник, 13 Февраля 2012, 19:40 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| BIOMSoft, Скорее второе. P.S: При создании круга дается три аргумента.
|
|
| |
Rorschach | Дата: Понедельник, 13 Февраля 2012, 19:42 | Сообщение # 11 |
участник
Сейчас нет на сайте
| Именно эта функция и меняет размеры твоих фигур, а ты говоришь автоматически Если не хочешь, чтобы это происходило, задай последние два параметра функции glViewport константами. Например: Code void reshape(int width, int height) { screenWidth=width; screenHeight = height; glViewport(0,0,800,600); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-50,50,-50,50); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }
Never compromise. Not even in the face of Armageddon.
|
|
| |
BIOMSoft | Дата: Понедельник, 13 Февраля 2012, 19:44 | Сообщение # 12 |
участник
Сейчас нет на сайте
| И разница между твоим кодом и его?
Перевод UDK - Завершено 30% Перевод UDK документации - Завершено 2%
|
|
| |
Rorschach | Дата: Понедельник, 13 Февраля 2012, 19:45 | Сообщение # 13 |
участник
Сейчас нет на сайте
| Quote (BIOMSoft) И разница между твоим кодом и его? Это такой лол, что даже лол.Добавлено (13.02.2012, 19:45) --------------------------------------------- ЗЫ. Параметры забыл выпилить.
Never compromise. Not even in the face of Armageddon.
|
|
| |
clidi | Дата: Понедельник, 13 Февраля 2012, 19:55 | Сообщение # 14 |
почетный гость
Сейчас нет на сайте
| Rorschach, Спасибо! это помогло, но я понял что не этого хотел) Мне нужно чтоб фигура менялась, но пропорционально изменениям окна. Например, если это был квадрат, то при изменении чтоб не стал прамоугольником.
|
|
| |
ZETA | Дата: Вторник, 14 Февраля 2012, 10:19 | Сообщение # 15 |
был не раз
Сейчас нет на сайте
| Например так
Code void CZEngine::Resize(GLuint width, GLuint height) { // Настраиваем порт просмотра glViewport(0, 0, width, height); m_width = width; m_height = height; m_aspect = static_cast<GLfloat>(width) / height;
// Делаем текущей матрицу проецирования и настраиваем ее параметры glMatrixMode(GL_PROJECTION); glLoadIdentity();
// область проецирования на порт просмотра по вертикали // располагается от -1 до +1, а по горизонтали - пропорционально // соотношению сторон клиентской области окна glOrtho(-m_aspect, m_aspect, -1, 1, -1, 1);
// Делаем текущей матрицу моделирования-вида glMatrixMode(GL_MODELVIEW); }
Полный код здесь
|
|
| |
clidi | Дата: Вторник, 14 Февраля 2012, 16:27 | Сообщение # 16 |
почетный гость
Сейчас нет на сайте
| ZETA, Не помогло.
|
|
| |