crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Определение поддерживаемой версии OpenGL с помощью модуля QtOpenGL
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 28.1.2011, 22:01
  registr, это разный код. В №7 - перебор значений, а в №10 - определение, что версия в системе больше или равна версии, использованной в программе
registr Дата 28.1.2011, 20:22
  Не понял, зачем так мудрить. Чем плох код поста 7.
Алексей1153 Дата 24.1.2011, 23:08
  T - минимальная версия, на которую проверяем (1.4)
T=
00001000


mask=((T-1) | T) =
00001111


считали версию V (1F)
V =
00011111


если mask<=V , то можно работать
registr Дата 24.1.2011, 21:47
 
Цитата(Алексей1153 @ 24.1.2011, 21:35) *
не понял, чего хочешь добиться

не понял вопроса, так будет выдаваться максимально поддерживаемая версия. Как при 3.0 и выше не знаю, надо qt поновее поставить. В твоем примере нужно убрать else, тогда будут выдавать все поддерживаемые версии от 1.1 до 2.0.
Алексей1153 Дата 24.1.2011, 21:35
  не понял, чего хочешь добиться
registr Дата 24.1.2011, 21:10
 
Раскрывающийся текст

точно)

Получается из-за хитрых чисел всегда не будет хватать одного разряда, чтобы перейти на следующую версию, поэтому
QGLFormat::OpenGLVersionFlags f=QGLFormat::openGLVersionFlags(); 

if(f < QGLFormat::OpenGL_Version_1_1 )
{ // 0
}
else
if(f < QGLFormat::OpenGL_Version_1_2 )
{ // 1.1
}
else
if(f < QGLFormat::OpenGL_Version_1_3 )
{ // 1.2
}
else
...
Алексей1153 Дата 24.1.2011, 20:54
 
Раскрывающийся текст
Цитата(registr @ 24.1.2011, 22:51) *
Пользователь №: 1234

прикольный номер у тебя ))
registr Дата 24.1.2011, 20:51
  QGLFormat::OpenGLVersionFlags f=QGLFormat::openGLVersionFlags(); :)

Т.е. он просуммировал от _1_1 до _2_0. Тогда получается он связался не WGL, а с драйвером видеокарты...

Спасибо! :)
Алексей1153 Дата 24.1.2011, 20:12
  3f - это комбинация битовых флагов

QGLFormat::OpenGL_Version_1_1 |
QGLFormat::OpenGL_Version_1_2 |
QGLFormat::OpenGL_Version_1_3 |
QGLFormat::OpenGL_Version_1_4 |
QGLFormat::OpenGL_Version_1_5 |
QGLFormat::OpenGL_Version_2_0


свич тут делу не поможет. Только так

QGLFormat::OpenGLVersionFlag f=QGLFormat::openGLVersionFlags(); 

if(f & QGLFormat::OpenGL_Version_1_1 )
{
}
else
if(f & QGLFormat::OpenGL_Version_1_2 )
{
}
else
if(f & QGLFormat::OpenGL_Version_1_3 )
{
}
else
...
registr Дата 24.1.2011, 20:06
  Вот 3f лежит между 0x20 и 0x40. Но это не дает никакой информации. На виддоус должно быть 0x01 по определению, я даже брал функции из OpenGL 1.2, чтобы проверить определяются они или нет. Прбовал через switch()
switch(QGLFormat::openGLVersionFlags())
{
   case QGLFormat::OpenGL_Version_1_1:
      QMessageBox::information(0, "OpenGL info", "Version 1.1");
   break;
   // ... так до 2.1
   default: QMessageBox::information(0, "OpenGL info", "???");
}

В ответ получаю знаки вопроса.

Цитата(Алексей1153 @ 24.1.2011, 19:55) *
ааа, всё, дошло до меня. Там же комбинация битов! Вот и ответ :)

3f - это версии от 1.1 до 2.0 включительно

не понял
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.7.2025, 12:09