Russian Qt Forum
Ноябрь 23, 2024, 18:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Получение информации о видеокарте  (Прочитано 3649 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Октябрь 10, 2012, 11:30 »

Понадобилось тут получить информацию о видеокарте которая установлена у пользователя. Решил делать через opengl так как вроде способ кроссплатформенный. Там все достаточно просто

Код:
    const GLubyte *m_pVendor;
    const GLubyte *m_pVersion;
    const GLubyte *m_pRenderer;
    const GLubyte *m_pExtensions;

    m_pVendor = glGetString(GL_VENDOR);
    m_pVersion = glGetString(GL_VERSION);
    m_pRenderer = glGetString(GL_RENDERER);

беда только в том что код работает в пределах контекста opengl иначе возвращает 0. Я естественно попробовал вариант в лоб. Создал QGLWidget сделал ему show()(если не сделать show() glGetString  вернет null) и все отрабатывает хорошо, но хотелось бы инфу получать фоном, не показывая разные виджеты юзверю, да и вариант не очень хороший как мне кажется. Решил поиграться с QGLContext, собственно контекст создается, но при этом glGetString все равно возвращает null. Собственно вопрос, как правильно создать контекст, для получения инфы ?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Октябрь 10, 2012, 11:39 »

Эммм.. продолжу сам с собой Улыбающийся Вот так работает

Код:
    QGLPixelBuffer buff(640,480);
    buff.makeCurrent();

    const GLubyte *m_pVendor;
    const GLubyte *m_pVersion;
    const GLubyte *m_pRenderer;

    m_pVendor = glGetString(GL_VENDOR);
    m_pVersion = glGetString(GL_VERSION);
    m_pRenderer = glGetString(GL_RENDERER);

    printf("Vendor: %s\n", m_pVendor);
    printf("version: %s\n", m_pVersion);
    printf("render: %s\n", m_pRenderer);
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Октябрь 10, 2012, 11:42 »

Попробуйте сначала создать контекст (QGLContext) - после этого gl должен быть живой. Заметим что на Вындоуз создание контекста не требуется - нужно glewInit, во всяком случае в нативном коде
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Октябрь 10, 2012, 11:47 »

Создание контекста даже не потребовалось(пост выше) Улыбающийся Но после создания QGLContext все равно идет возврат null, а если после создания вызвать makeCurrent() для контекста, то все отрабатывает отлично, в первый раз я этого не сделал.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 23.