Ошибка unable to create opengl

Содержание

  • 1 Попробуйте эти исправления
    • 1.1 Исправление 1: переустановите драйвер видеокарты
    • 1.2 Исправление 2: обновить драйвер видеокарты

Это выглядит знакомо?

Если у вас есть эта ошибкаНе удалось создать контекст OpenGL для формата QSurFaceFormat”На вашем компьютере с Windows. Не расстраивайся. Есть обходные пути для исправить ошибку.

Эта ошибка возникает из-за того, что на вашем компьютере не установлен драйвер графической карты. И мы поможем вам исправить ошибку и сразу запустить программу!

Попробуйте эти исправления

Вот решения, которые помогли людям решить ту же проблему, что и вы. Вам не нужно пробовать их все; просто пройдите вниз по списку, пока все снова не заработает.

  1. Переустановите драйвер видеокарты
  2. Обновите драйвер видеокарты

Примечание. Приведенные ниже снимки экрана относятся к Windows 10, а исправления относятся к Windows 8 и Windows 7.

Исправление 1: переустановите драйвер видеокарты

Так как ошибка «Не удалось создать контекст OpenGL для формата QSurFaceFormat”Вызвано драйвером графической карты, вы можете переустановить текущий драйвер на вашем компьютере, чтобы устранить неисправность вашего драйвера. Вот как это сделать:

  1. На клавиатуре нажмите Ключ с логотипом Windows

    а также р одновременно вызвать окно «Выполнить».

  2. Тип devmgmt.msc и нажмите Хорошо открыть диспетчер устройств.

  3. Двойной щелчок Видеоадаптеры расширить категорию.

  4. Щелкните правой кнопкой мыши на устройстве с вашей видеокартой и выберите Удалить устройство.

  5. Установите флажок рядом с Удалить программное обеспечение драйвера для этого устройства, затем нажмите Удалить.

  6. После удаления перезагрузите компьютер.
  7. Windows переустановит драйвер видеокарты для вашего компьютера.

Затем попробуйте запустить программу, выдавшую ошибку, и посмотрите, исправит ли она вашу проблему.

Исправление 2: обновить драйвер видеокарты

Отсутствие или устаревший драйвер видеокарты также может вызвать эту ошибку. Поэтому вы должны обновлять драйвер видеокарты.

Есть два способа обновить драйвер видеокарты: вручную а также автоматически.

Обновление драйвера вручную — Вы можете обновить драйвер видеокарты вручную, перейдя на веб-сайт производителя для своего устройства и выполнив поиск самой последней верной версии драйвера. Обязательно выбирайте только драйвер, совместимый с вашей операционной системой Windows.

Автоматическое обновление драйвера — Если у вас нет времени, терпения или навыков работы с компьютером для обновления драйвера видеокарты, вместо этого вы можете сделать это автоматически с Водитель Легко.

Driver Easy автоматически распознает вашу систему и найдет последние правильные драйверы для вашего точного драйвера и вашей версии Windows, а также загрузит и правильно установит их.

  1. Скачать и установите Driver Easy.
  2. Запустите Driver Easy и нажмите Сканировать сейчас кнопка. Driver Easy проверит ваш компьютер и обнаружит проблемы с драйверами.

  3. Нажмите на Обновить Кнопка рядом с отмеченным графическим устройством для автоматической загрузки правильной версии этого драйвера, а затем вы можете установить его на свой компьютер (вы можете сделать это с помощью СВОБОДНО версия).
    Или нажмите Обновить Все для автоматической загрузки и установки правильной версии всех драйверов, которые отсутствуют или устарели в вашей системе (для этого требуется Pro версия который приходит с полной поддержкой и 30-дневная гарантия возврата денег).

  4. Перезагрузите компьютер, чтобы изменения вступили в силу.

Откройте это приложение еще раз и посмотрите, нет ли ошибки «Не удалось создать контекст OpenGL для формата QSurFaceFormat”Было исправлено.

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account

Closed

lexcass opened this issue

Jul 7, 2017

· 18 comments

Closed

Unable to create OpenGL context

#273

lexcass opened this issue

Jul 7, 2017

· 18 comments

Comments

@lexcass

Ubuntu 14.04
Chrome version 59.0.3071.115
Moonlight version 0.7.3

Everything works perfectly until I start a game. The game will run on my gaming PC, and after a loading screen, my laptop (client) will get an error saying «unable to create OpenGL context.»

I already set these flags in chrome://flags (as mentioned in other threads):
— enable-nacl
— ignore-gpu-blacklist

I also made sure that hardware acceleration was enabled in Chrome’s settings. Are there any other settings or flags that would resolve this issue? Will this happen if my system’s specs are too low?

@jorys-paulin

  • How about the client’s specs?
  • Have you installed OpenGL on your client, if it is on Linux?

@lexcass

Client CPU: Intel(R) Core(TM) i3-4030U CPU @ 1.90GHz (x86_64)
Client Mem: 4GB Memory (DDR3L)
Client GPU: Intel HD Graphics 4400
— product: Haswell-ULT Integrated Graphics Controller
— width: 64 bits
— clock: 33MHz

I already had OpenGL, but I reinstalled it just to be safe. The problem persisted. The above OS and chrome versions are for the client (laptop), and the OpenGL version below is from running glxinfo.

OpenGL version string: 3.0 Mesa 10.1.3

@jorys-paulin

@jorys-paulin

@lexcass

Client OS
Ubuntu 14.04
Chrome version 59.0.3071.115
Moonlight version 0.7.3

Thank you very much. I appreciate your help. I will see what I can decipher from the code, and if I find anything, I will post the solution here.

@jorys-paulin

Hey @lexcass, do you have resolved your problem?

@lexcass

Unfortunately, no. The last thing I tried was installing OpenGL ES since it was included in the source file you linked.

@jorys-paulin

@lexcass I’ll test on my Ubuntu Virtual machine, see what I got. I’ll come back to you then :)

@jorys-paulin

Does other WebGL/OpenGL applications work in chrome? Does it require an activation of some sort?

@lexcass

Yes, other WebGL/OpenGL applications work in Chrome. I used the same flags with these applications as I did with Moonlight, and Moonlight is still unable to create an OpenGL context.

The applications didn’t run very well (just a few FPS), so my hardware may not be fully equipped to handle WebGL. However, I believe it would at least create an OpenGL context as the others did.

@lexcass

If I run Moonlight from the console I get this error:

[6856:6891:0721/095711.809602:ERROR:browser_gpu_channel_host_factory.cc(103)] Failed to launch GPU process.
Created new window in existing browser session.

@jorys-paulin

Are you running an official build or an unpacked extension? Is the menu working?

@lexcass

@jorys-paulin

@lexcass

No, sorry. I should have clarified that. The menu and games display, and selecting a game runs the game on my gaming computer. However on the client, it still tells me «unable to create OpenGL context.»

@jorys-paulin

I think we’ll need more help, I can’t quite dive into the code to try to catch the problem because I’m not a C++ developer, but maybe @cgutman can help us on that.

@Inthrall

I’m getting this same issue now, is there any more information I can provide here to help?

@cgutman

Fixed now that we only distribute through the Web Store which checks for WebGL support as declared in our manifest.

I have recently made my first OpenGL program rendering a cube, which I extended to include some other basic features (rotate, zoom, pan, mouse selection of vertices). However, I think the program was using some version of OpenGL ES x.x because I could not use glReadPixels with gl_depth_component to enable mouse selection of only visible vertices.

To fix this I’ve modified my old program to manually specify the default surface format in my main function to OpenGL version 3.0, but now the program throws the following error when it tries to create an instance of GLWidget.

ASSERT:»QOpenGLFunctions::isInitialized(d_ptr)»

My main function (main.cpp):

#include "mainwindow.h"
#include <QApplication>
#include <QOpenGLFunctions>


int main(int argc, char *argv[])
{
    QSurfaceFormat format;
    format.setSamples(16);     
    format.setDepthBufferSize(24);
    format.setVersion(3,0);
    format.setProfile(QSurfaceFormat::CoreProfile);
    QSurfaceFormat::setDefaultFormat( format);
    QApplication a(argc, argv); 
    MainWindow w;                                          //breakpoint here - step into
    w.show();
    return a.exec();
}

Stepping into this breakpoint leads me to my MainWindow constructor(mainwindow.cpp):

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);                                       //breakpoint here - step into
    ui->GLwidget2->getmainwindowpointer(this);
    connect(ui->actionTop,SIGNAL(triggered()),ui->GLwidget2,SLOT(settopview()));
    connect(ui->actionRight, SIGNAL(triggered()), ui->GLwidget2, SLOT(setrightview()));
    connect(ui->actionIso,SIGNAL(triggered()),ui->GLwidget2,SLOT(setisoview()));
    //connect(ui->checkBox_perspective,SIGNAL(released()),ui->GLwidget2,SLOT(setperspective()));
    connect(ui->checkBox_legend, SIGNAL(released()), ui->GLwidget2, SLOT(setlegend()));
    connect(ui->checkBox_edges, SIGNAL(released()), ui->GLwidget2, SLOT(setedges()));
    connect(ui->checkBox_faces, SIGNAL(released()), ui->GLwidget2, SLOT(setfaces()));
    connect(ui->actionFind_vertex,SIGNAL(triggered(bool)),ui->GLwidget2,SLOT(startvertexsearch()));
    connect(ui->actionFit_to_screen,SIGNAL(triggered()),ui->GLwidget2,SLOT(fittoscreen()));
    connect(ui->pushButton_selectMode,SIGNAL(released()),ui->GLwidget2,SLOT(setSelectMode()));
    connect(ui->pushButton_cancelSelect,SIGNAL(released()),ui->GLwidget2,SLOT(setCancelSelectMode()));
}

Stepping into this breakpoint leads me to ui_mainwindow.h, which creates the objects in my mainwindow and reaches this line:

[code above…]

    pushButton = new QPushButton(centralWidget);
    pushButton->setObjectName(QStringLiteral("pushButton"));

    verticalLayout_2->addWidget(pushButton);


    horizontalLayout->addLayout(verticalLayout_2);

    GLwidget2 = new GLWidget(centralWidget);                 /break point here - step into

[code below…]

This all runs fine until the constructor of my GLWidget is called…
(glwidget.cpp)

#include "glwidget.h"

GLWidget::GLWidget(QWidget *parent = 0) :
QOpenGLWidget(parent)
{                                        //breakpoint here
    alpha = 0;
    beta = 0;
    distance = defaultdistance;
    QSurfaceFormat format;
    format.setSamples(16);
    format.setDepthBufferSize(24);
    format.setVersion(3,0);
    format.setProfile(QSurfaceFormat::CoreProfile);
    this->setFormat(format);
}

As soon as I continue past this breakpoint the ASSERT error is thrown. Debugging it leads me to this place in qopenglfunctions.h

[code above…]

inline GLuint QOpenGLFunctions::glCreateProgram()
{
#ifdef QT_OPENGL_ES_2
    GLuint result = ::glCreateProgram();
#else
    Q_ASSERT(QOpenGLFunctions::isInitialized(d_ptr));       //this line
    GLuint result = d_ptr->CreateProgram();
#endif
    Q_OPENGL_FUNCTIONS_DEBUG
    return result;
}

[codde below…]

The value of d_ptr at this time is NULL, which I guess is the cause of the error. Do I need to perform some initialisation of desktop OpenGL versions that aren’t required for OpenGL ES versions?

I’m still new to OpenGL so any help would be appreciated!

Update I’m not sure what was happening, but after merging my updated code with my older working code everything worked fine. Hopefully this happens to no-one else!

Ошибка при запуске программы Failed to create OpenGL context for format QSurFaceFormat Проблемы с компьютером Ответ

Попробуйте эти исправления

Вот решения, которые помогли людям решить ту же проблему, что и вы. Вам не нужно пробовать их все; просто пройдите вниз по списку, пока все снова не заработает.

  1. Переустановите драйвер видеокарты
  2. Обновите драйвер видеокарты

Примечание. Приведенные ниже снимки экрана относятся к Windows 10, а исправления относятся к Windows 8 и Windows 7.

Исправление 1: переустановите драйвер видеокарты

Так как ошибка «Не удалось создать контекст OpenGL для формата QSurFaceFormat”Вызвано драйвером графической карты, вы можете переустановить текущий драйвер на вашем компьютере, чтобы устранить неисправность вашего драйвера. Вот как это сделать:

  1. На клавиатуре нажмите Ключ с логотипом Windows

    kontroller-ps4-migaet-belym_3_1.png

    а также р одновременно вызвать окно «Выполнить».

  2. Тип devmgmt.msc и нажмите Хорошо открыть диспетчер устройств.

  3. Двойной щелчок Видеоадаптеры расширить категорию.

  4. Щелкните правой кнопкой мыши на устройстве с вашей видеокартой и выберите Удалить устройство.

  5. Установите флажок рядом с Удалить программное обеспечение драйвера для этого устройства, затем нажмите Удалить.

  6. После удаления перезагрузите компьютер.
  7. Windows переустановит драйвер видеокарты для вашего компьютера.

Затем попробуйте запустить программу, выдавшую ошибку, и посмотрите, исправит ли она вашу проблему.

Исправление 2: обновить драйвер видеокарты

Отсутствие или устаревший драйвер видеокарты также может вызвать эту ошибку. Поэтому вы должны обновлять драйвер видеокарты.

Есть два способа обновить драйвер видеокарты: вручную а также автоматически.

Обновление драйвера вручную — Вы можете обновить драйвер видеокарты вручную, перейдя на веб-сайт производителя для своего устройства и выполнив поиск самой последней верной версии драйвера. Обязательно выбирайте только драйвер, совместимый с вашей операционной системой Windows.

Автоматическое обновление драйвера — Если у вас нет времени, терпения или навыков работы с компьютером для обновления драйвера видеокарты, вместо этого вы можете сделать это автоматически с Водитель Легко.

Driver Easy автоматически распознает вашу систему и найдет последние правильные драйверы для вашего точного драйвера и вашей версии Windows, а также загрузит и правильно установит их.

  1. Скачать и установите Driver Easy.
  2. Запустите Driver Easy и нажмите Сканировать сейчас кнопка. Driver Easy проверит ваш компьютер и обнаружит проблемы с драйверами.

  3. Нажмите на Обновить Кнопка рядом с отмеченным графическим устройством для автоматической загрузки правильной версии этого драйвера, а затем вы можете установить его на свой компьютер (вы можете сделать это с помощью СВОБОДНО версия).
    Или нажмите Обновить Все для автоматической загрузки и установки правильной версии всех драйверов, которые отсутствуют или устарели в вашей системе (для этого требуется Pro версия который приходит с полной поддержкой и 30-дневная гарантия возврата денег).

  4. Перезагрузите компьютер, чтобы изменения вступили в силу.

Откройте это приложение еще раз и посмотрите, нет ли ошибки «Не удалось создать контекст OpenGL для формата QSurFaceFormat”Было исправлено.

[ИСПРАВЛЕНО] Не удалось создать контекст OpenGL для формата QSurFaceFormat Ссылка на основную публикацию

[ИСПРАВЛЕНО] Не удалось создать контекст OpenGL для формата QSurFaceFormat

Milestone клуб

Решение

asa33

, Похоже не подходит ноут по системным требованиям:

Цитата

Сообщение от

asa33 Посмотреть сообщение

intel hd graphics 3000

Кликните здесь для просмотра всего текста

Минимальные системные требования:
Чтобы использовать Spark AR Studio, вам понадобится:

Операционная система: Windows 10 (64 бит) или MacOS 10.14+.
Процессор: минимум Intel Core i3 2,5 ГГц или AMD Bulldozer / Jaguar / Puma / Zen с набором инструкций SSE4.1.
Оперативная память: 4 ГБ.
Дисплей: разрешение экрана 1280×768 или выше.
Графический процессор: Intel HD Graphics 4000 / Nvidia GeForce 710 / AMD Radeon HD 6450 или выше.

Существует несколько известных аппаратных проблем, которые не позволяют Spark AR Studio работать должным образом:
Intel HD3000 не запускается, ошибка OpenGL.
Geforce 920M – не рендерится правильно.
Radeon R7 m360 – не рендерится правильно.
Radeon R5 M330 – не рендерится правильно.
Nvidia GT240 – не рендерит правильно.
Geforce m310m – не рендерится правильно.

2

Решение

Я думаю, что ваша ошибка может быть из-за того, что список свойств не завершен со значением NULL. В противном случае он попытается получить следующий параметр, который является полностью неизвестным значением, поэтому возникает ошибка CL_INVALID_VALUE.

cl_context_properties context_properties[] ={CL_GL_CONTEXT_KHR, (cl_context_properties)wglGetCurrentContext(),CL_WGL_HDC_KHR, (cl_context_properties)wglGetCurrentDC(),CL_CONTEXT_PLATFORM, (cl_context_properties)platform(),NULL};

1

Шаг 1. Установите обновления Windows

Проверьте установлены ли на компьютере последние обновления для ОС Windows от Microsoft. Попробуйте установить обновления вручную.

Функция glGetError()

В тот момент, когда вы неправильно используете OpenGL (например, настраиваете буфер без предварительной привязки), библиотека заметит это и сгенерирует один или несколько флагов ошибки. Мы можем запросить состояние данных флагов с помощью функции glGetError(). В случае, если при неправильном использовании OpenGL был поднят флаг ошибки, данная функция вернет её код:

Если же ошибок не было, то функция glGetError() вернет код 0, соответствующий флагу GL_NO_ERROR. Коды ошибок, которые может возвращать функция glGetError(), перечислены ниже:

Флаг Код Описание
GL_NO_ERROR 0 С момента последнего вызова glGetError() никаких ошибок не было обнаружено.
GL_INVALID_ENUM 1280 Устанавливается, когда параметр перечисления не является допустимым.
GL_INVALID_VALUE 1281 Устанавливается, когда значение не является допустимым.
GL_INVALID_OPERATION 1282 Устанавливается, когда команда не является допустимой для заданных параметров.
GL_STACK_OVERFLOW 1283 Устанавливается, когда операция добавления данных в стек вызывает переполнение стека.
GL_STACK_UNDERFLOW 1284 Устанавливается, если операция извлечения данных из стека происходит в момент, когда стек пуст.
GL_OUT_OF_MEMORY 1285 Устанавливается, когда операция выделения памяти не может выделить достаточно памяти.
GL_INVALID_FRAMEBUFFER_OPERATION 1286 Устанавливается при чтении или записи во фреймбуфер, который не является завершенным.

В тот момент, когда произошло появление флага ошибки, сообщения о других флагах ошибок поступать не будут. Кроме того, в момент вызова функции glGetError() происходит сброс всех флагов ошибок (или только одного, если речь идет о распределенной системе (см. примечание ниже)). Это означает, что если вы один раз вызываете glGetError() в конце каждого кадра и функция возвращает код ошибки, то вы не сможете определить, была ли она единственной, и в каком конкретно месте вашего кадра произошло данное событие.

Примечание: Обратите внимание, что когда OpenGL работает в распределенном режиме, например, как в системах «X Window System», то другие коды ошибок все еще могут быть сгенерированы, если они имеют разные коды. Последующий вызов glGetError() сбрасывает только один флаг из всех. Поэтому рекомендуется вызывать glGetError() внутри цикла.

glBindTexture(GL_TEXTURE_2D,tex);

std::cout<<glGetError()<<std::endl;// вернет код 0 (no error)

glTexImage2D(GL_TEXTURE_3D,0,GL_RGB,512,512,0,GL_RGB,GL_UNSIGNED_BYTE,data);

std::cout<<glGetError()<<std::endl;// вернет код 1280 (invalid enum)

glGenTextures(5,textures);

std::cout<<glGetError()<<std::endl;// вернет код 1281 (invalid value)

std::cout<<glGetError()<<std::endl;// вернет код 0 (no error)

Самое замечательное в функции glGetError() то, что она позволяет относительно легко определить место, в котором могла произойти (любая) ошибка, и проверить правильность использования OpenGL. Допустим, вместо ожидаемого изображения вы получаете черный экран, и понятия не имеете, что его вызывает: может это фреймбуфер не настроен должным образом? Или вы забыли связать текстуру? Вставляя по всему коду вызов функции glGetError(), вы быстро найдете первое место возникновения ошибки в OpenGL.

По умолчанию функция glGetError() сообщает только коды ошибок, по которым трудно понять суть ошибки (если, конечно, вы не выучили их наизусть). Часто имеет смысл написать небольшую вспомогательную функцию, выводящую описание ошибки вместе с тем местом, где была вызвана функция glGetError():

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

GLenum glCheckError_(constchar*file,intline)

{

    GLenum errorCode;

    while((errorCode=glGetError())!=GL_NO_ERROR)

    {

        std::stringerror;

        switch(errorCode)

        {

            caseGL_INVALID_ENUM:error=“INVALID_ENUM”;break;

            caseGL_INVALID_VALUE:error=“INVALID_VALUE”;break;

            caseGL_INVALID_OPERATION:error=“INVALID_OPERATION”;break;

            caseGL_STACK_OVERFLOW:error=“STACK_OVERFLOW”;break;

            caseGL_STACK_UNDERFLOW:error=“STACK_UNDERFLOW”;break;

            caseGL_OUT_OF_MEMORY:error=“OUT_OF_MEMORY”;break;

            caseGL_INVALID_FRAMEBUFFER_OPERATION:error=“INVALID_FRAMEBUFFER_OPERATION”;break;

        }

        std::cout<<error<<” | “<<file<<” (“<<line<<“)”<<std::endl;

    }

    returnerrorCode;

}

#define glCheckError() glCheckError_(__FILE__, __LINE__)

Директивы препроцессора __FILE__ и __LINE__ во время компиляции заменяются соответствующим файлом и номером строки, в которых они были скомпилированы. Чем больше вызовов glCheckError() мы вставим в наш код, тем более точно сможем определить, какой вызов glCheckError() вернул ошибку.

glBindBuffer(GL_VERTEX_ARRAY,vbo);

glCheckError();

Это даст нам следующий результат:

Функция glGetError() не решит за вас все проблемы, поскольку возвращаемая ею информация об ошибке довольно скудна. Но она поможет вам поймать опечатки или быстро определить, где в вашем коде что-то пошло не так.

Отладочная информация шейдеров

Когда речь заходит о GLSL, то у нас, к сожалению, нет доступа к такой функции, как glGetError(), как и нет возможности пошагово выполнять код шейдера. Когда вместо ожидаемого результата работы вашей программы вы получаете черный экран или совершенно неправильные визуальные эффекты, то часто бывает трудно понять, что происходит, если в коде шейдера есть ошибка. Да, у нас есть отчеты компиляции, которые сообщают о синтаксических ошибках, но выловить семантические — то еще дело.

Один из часто используемых трюков, чтобы выяснить, что не так с шейдером, заключается в том, чтобы оценить все соответствующие переменные в шейдерной программе, отправив их непосредственно в выходной канал фрагментного шейдера. Выводя шейдерные переменные непосредственно в выходные цветовые каналы, мы можем передавать интересную информацию, проверяя визуальные результаты. Например, предположим, что мы хотим проверить, имеет ли модель правильные нормальные векторы. Мы можем передать их (трансформированные или нетрансформированные) из вершинного шейдера во фрагментный шейдер, где затем отобразим нормали следующим образом:

#version 330 core

out vec4 FragColor;

invec3 Normal;

[...]

voidmain()

{

    [...]

    FragColor.rgb=Normal;

    FragColor.a=1.0f;

}

Выводя переменную (не цветовую) в выходной цветовой канал подобным образом, мы можем быстро проверить, содержит ли переменная правильные значения. Если, например, визуальным результатом является полностью черный экран, то становится ясно, что нормальные векторы передаются шейдерам некорректно; а когда они визуализированы, то относительно легко проверить, являются ли они (своего рода) корректными или нет:

На вышеприведенной картинке мы видим, что нормальные векторы мирового пространства являются корректными, поскольку боковые стороны модели рюкзака окрашены в красный цвет (что означает, что нормали указываются в (верном) положительном направлении оси x). Аналогично, передняя сторона рюкзака окрашена синим цветом, соответствующим направлению нормалей в сторону положительной оси z.

Этот подход можно легко распространить на любой тип переменной, которую вы хотите протестировать. Всякий раз, когда вы подозреваете, что с вашими шейдерами что-то не так, попробуйте отобразить несколько переменных и/или промежуточных результатов, чтобы увидеть, в какой части алгоритма что-то отсутствует или кажется неправильным.

Удостоверьтесь поддерживает ли ваш видеоадаптер графический стандарт OpenGL  (версии не ниже 3.0). Если нет, то избавиться от ошибки и подключиться к видеоконференции  вам поможет установка менее требовательного классического клиентского приложения TrueConf 6.5.9 для Windows. Для подключения к сервису TCO вы можете скачать TrueConf 6.5.9 с нашего сайта. Чтобы получить данную версию приложения для подключения к корпоративному TrueConf Server, обратитесь в нашу техподдержку.

Сторонние инструменты отладки

Вы также можете использовать стороннее программное обеспечение. Сторонние программы часто уже внедрены в OpenGL-драйверы и способны перехватывать все виды вызовов OpenGL, чтобы предоставить вам наиболее полную информацию обо всем, что может понадобиться. Эти инструменты могут помочь вам в профилировании использования OpenGL-функций, поиске узких мест, проверке буферной памяти и отображении текстур и вложений фреймбуфера. Когда вы работаете над (большим) кодом, эти инструменты могут стать неоценимыми помощниками в процессе разработки.

Ниже перечислены некоторые из наиболее популярных инструментов отладки; попробуйте несколько из них, чтобы увидеть, что лучше всего соответствует вашим потребностям.

RenderDoc

RenderDoc — это отличный автономный инструмент отладки. Чтобы начать захват, вы указываете исполняемый файл, который хотите захватить, и рабочий каталог. Затем приложение запускается как обычно, и всякий раз, когда вы хотите проверить определенный кадр, вы позволяете RenderDoc захватить один или несколько кадров в текущем состоянии исполняемого файла. В захваченных кадрах можно просмотреть состояние конвейера, все команды OpenGL, буферное хранилище и используемые текстуры.

CodeXL

CodeXL — это инструмент отладки GPU, выпущенный как автономный инструмент, так и плагин к Visual Studio. CodeXL дает хороший набор информации и отлично подходит для профилирования графических приложений. Программа также работает на картах NVIDIA или Intel, но без поддержки отладки OpenCL.

Лично у меня нет большого опыта работы с CodeXL, так как я нахожу RenderDoc более простым в использовании, но я все равно включил его, поскольку он выглядит довольно солидным инструментом и разработан одним из крупнейших производителей графических процессоров.

NVIDIA Nsight

Популярный инструмент отладки GPU NVIDIA Nsight — это плагин к Visual Studio IDE или Eclipse IDE (теперь у NVIDIA также есть автономная версия). NVIDIA Nsight — это невероятно полезный инструмент для графических разработчиков, поскольку собирает объемную статистику в режиме реального времени использования графического процессора и состояния графического процессора кадр за кадром.

В то время, когда вы запускаете приложение из Visual Studio (или Eclipse) с помощью команд отладки или профилирования, NVIDIA Nsight запускается в самом приложении. Самое замечательное в NVIDIA Nsight то, что он визуализирует оверлей из вашего приложения, который вы можете использовать для сбора всех видов интересующей вас информации о вашем приложении, как во время выполнения, так и во время покадрового анализа.

NVIDIA Nsight является невероятно полезным инструментом, но у него есть один существенный недостаток, заключающийся в том, что он работает только на картах NVIDIA.

Я уверен, что еще есть много других инструментов отладки, которые я пропустил (например, VOGL Valve или APItrace), но я думаю, что этот список уже должен дать вам много инструментов для экспериментов.

Дополнительные ресурсы

   Why is your code producing a black window: список основных причин от Reto Koradi того, почему ваш экран может не производить никаких выходных данных.

   Debug Output in OpenGL: большая статья про использование debug output от Vallentin с подробной информацией о настройке контекста отладки в разных оконных системах.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5

(

4

оценок, среднее:

5,00

из 5)

loading.gif

Загрузка…

  • Home
  • Forum
  • The Ubuntu Forum Community
  • Ubuntu Specialised Support
  • Gaming & Leisure
  • Unable to create OpenGL window: couldn’t find matching GLX visual

  1. Unable to create OpenGL window: couldn’t find matching GLX visual

    I recently installed Ubuntu 10.10 on an asus netbook, and everything has worked fine until a few days ago. I used to play Uplink, naev and a few other games in my spare time, but when I tried yesterday to launch some of them I’ve got (in various forms) this error:

    Code:

    Unable to create OpenGL window: couldn't find matching GLX visual

    This, for instance, is the message naev gives me:

    Code:

    giovanni@giovanni-1015P:~$ naev
     NAEV v0.4.2
     Sea of Darkness
    
    SDL: 1.2.14 [compiled: 1.2.14]
    
    Available fullscreen modes:
      1024 x 600
      800 x 600
      640 x 480
    ERROR opengl.c:448 [gl_createWindow]: Unable to create OpenGL window: Couldn't find matching GLX visual
    NAEV recieved SIGABRT!
    ./naev() [0x808a4e5] loadscreen_render(...):0 ??
    [0xc1c40c] ??(...):0 ??
    /lib/libc.so.6(abort+0x182) [0xde2e42] ??(...):0 ??
    ./naev(gl_init+0xa64) [0x8099304] gl_init(...):0 ??
    ./naev(main+0x2ec) [0x808aafc] main(...):0 ??
    /lib/libc.so.6(__libc_start_main+0xe7) [0xdcbce7] ??(...):0 ??
    ./naev() [0x8059321] _start(...):0 ??
    Report this to project maintainer with the backtrace.

    I googled the error a bit, and I’ve seen it was a quite common problem a while ago, but I couldn’t really find a solution. Is there anyone who can help me figure out what’s wrong?

    — What do you get if you multiply six by nine?
    — 42!


  2. Re: Unable to create OpenGL window: couldn’t find matching GLX visual

    What kind of graphics card? How did you install the graphics drivers? Can you run «glxgears» from the terminal?


  3. Re: Unable to create OpenGL window: couldn’t find matching GLX visual

    Quote Originally Posted by Technophobia
    View Post

    What kind of graphics card? How did you install the graphics drivers? Can you run «glxgears» from the terminal?

    I have an integratedIntel GMA 950 chipset. I didn’t install any driver, everything worked (for a while, at least) out of the box.

    This is the output from glxgears:

    Code:

    giovanni@giovanni-1015P:~$ glxgears
    Xlib:  extension "GLX" missing on display ":0.0".
    Error: couldn't get an RGB, Double-buffered visual

    — What do you get if you multiply six by nine?
    — 42!


  4. Re: Unable to create OpenGL window: couldn’t find matching GLX visual

    Quote Originally Posted by Technophobia
    View Post

    What kind of graphics card? How did you install the graphics drivers? Can you run «glxgears» from the terminal?

    I have an integratedIntel GMA 950 chipset. I didn’t install any driver, everything worked (for a while, at least) out of the box.

    This is the output from glxgears:

    Code:

    giovanni@giovanni-1015P:~$ glxgears
    Xlib:  extension "GLX" missing on display ":0.0".
    Error: couldn't get an RGB, Double-buffered visual

    — What do you get if you multiply six by nine?
    — 42!


  5. Re: Unable to create OpenGL window: couldn’t find matching GLX visual

    Quote Originally Posted by Technophobia
    View Post

    What kind of graphics card? How did you install the graphics drivers? Can you run «glxgears» from the terminal?

    I have an integratedIntel GMA 950 chipset. I didn’t install any driver, everything worked (for a while, at least) out of the box.

    This is the output from glxgears:

    Code:

    giovanni@giovanni-1015P:~$ glxgears
    Xlib:  extension "GLX" missing on display ":0.0".
    Error: couldn't get an RGB, Double-buffered visual

    — What do you get if you multiply six by nine?
    — 42!


  6. Re: Unable to create OpenGL window: couldn’t find matching GLX visual

    Quote Originally Posted by Technophobia
    View Post

    What kind of graphics card? How did you install the graphics drivers? Can you run «glxgears» from the terminal?

    I have an integratedIntel GMA 950 chipset. I didn’t install any driver, everything worked (for a while, at least) out of the box.

    This is the output from glxgears:

    Code:

    giovanni@giovanni-1015P:~$ glxgears
    Xlib:  extension "GLX" missing on display ":0.0".
    Error: couldn't get an RGB, Double-buffered visual

    — What do you get if you multiply six by nine?
    — 42!


  7. Re: Unable to create OpenGL window: couldn’t find matching GLX visual

    Quote Originally Posted by Technophobia
    View Post

    What kind of graphics card? How did you install the graphics drivers? Can you run «glxgears» from the terminal?

    I have an integratedIntel GMA 950 chipset. I didn’t install any driver, everything worked (for a while, at least) out of the box.

    This is the output from glxgears:

    Code:

    giovanni@giovanni-1015P:~$ glxgears
    Xlib:  extension "GLX" missing on display ":0.0".
    Error: couldn't get an RGB, Double-buffered visual

    EDIT: Sorry for the multi-multi-[…]multi post, guys. It seems I had some connection issues. Is there a way to delete the previous posts?

    Last edited by Odexios; January 16th, 2011 at 10:58 PM.

    — What do you get if you multiply six by nine?
    — 42!


  8. Re: Unable to create OpenGL window: couldn’t find matching GLX visual

    Try to reinstall/install the Intel graphics driver. I don’t have any experience with Intel GPUs so good luck with your google fu.


Bookmarks

Bookmarks


Posting Permissions

Понравилась статья? Поделить с друзьями:
  • Ошибка unable to create file
  • Ошибка unable to create account
  • Ошибка unable to copy the file
  • Ошибка unable to connect to the soundwire server
  • Ошибка unable to connect to the internet