crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 19.4.2024, 3:42