Четверг, 28 Марта 2024, 22:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Вопрос о Win32 и Opengl
Вопрос о 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
участник
Сейчас нет на сайте
Именно эта функция и меняет размеры твоих фигур, а ты говоришь автоматически smile Если не хочешь, чтобы это происходило, задай последние два параметра функции 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
участник
Сейчас нет на сайте
И разница между твоим кодом и его? dry

Перевод 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, Не помогло.
Форум игроделов » Программирование » C/C++ » Вопрос о Win32 и Opengl
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг