|
Модераторы: Rickert, Alexeis, BorisVorontsov |
|
vindavirik |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 4.5.2009 Репутация: нет Всего: нет |
Здравствуйте! Столкнулся я с такой проблемой: создаю QGLWidget, определяю функцию initializeGL()
функции createVBO и runCuda.... выдраны из примера по совместимости opengl и cuda, который идёт вместе с cuda toolkit. В них создается буфер vbo и связывается с ресурсом cuda.
Функцию paintGL() определяю следующим образом:
Проблема заключается в том, что функцию runCudaColor получается вызвать только один раз, если QGLWidget имеет параметр SampleBuffer и только два раза, если QGLWidget имеет DoubleBuffer. Падает функция на строчке checkCudaErrors(cudaGraphicsMapResources(1, vbo_resource, 0)); т.е. при попытке обращения к ресурсу. Такое ощущение, что при вызове paintGL ресурс cuda_vbo_resource_color занимается и больше никогда не освобождается. Подскажите пожалуйста как освободить ресурс после отрисовки? |
||||||
|
|||||||
vindavirik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 4.5.2009 Репутация: нет Всего: нет |
дело похоже не в занятости ресурса, а в контесте OGL. Функция cudaGraphicsMapResources возвращает cudaErrorInvalidGraphicsContext после второго вызова. Получается сначала всё хорошо, но потом paintGL() каким то образом портит контекст? Или я что то не так понимаю?
|
|||
|
||||
Amp |
|
|||
Опытный Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 2 Всего: 17 |
В initglew что именно происходит? И зачем вообще glew понадобился, если в Qt есть встроенные средства для работы с расширениями?
|
|||
|
||||
vindavirik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 4.5.2009 Репутация: нет Всего: нет |
из библиотеки glew мне нужный функции glGenBuffers и glBindBuffer. я генерю vertex buffer object и через него связываю область памяти cuda с openGL. как это сделать с помощью Qt`ного vertex object`а я не знаю..
|
|||
|
||||
Amp |
|
|||
Опытный Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 2 Всего: 17 |
Qt сам может инициализировать связанные с расширениями функции (см. QGLFunctions). Может glew где-то неявно создает или меняет текущий контекст - проверь контекст в разных местах.
|
|||
|
||||
vindavirik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 4.5.2009 Репутация: нет Всего: нет |
убрал glew, стал пользоваться QGLFunctions - не помогло, результат точно такой же..
|
|||
|
||||
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |