Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 61

OpenGl в Qt, glReadPixels

29.08.2017, 15:29. Показов 2696. Ответов 23

Студворк — интернет-сервис помощи студентам
Значит есть такая проблема с методом glReadPixels, при рисовании через шейдеры он не работает так как написано в темах где я его нашел, а именно он не записывает в указатель значение глубины(GL_DEPTH_COMPONENT), мне нужно получать реальные координаты объекта по клику мышки. В прикрепленном проекте это находится в методе GetRealPos. Может я что не так понял, но везде где я смотрел все пишут одно и тоже, весь метод получения реальных координат мне понятен. Подскажите может что я не так сделал, или же при отрисовке через шейдеры данный метод и не должен работать?
(в проекте в шейдет отдается единичная матрица, а потому координаты треугольника сразу в openGL-евских координатах)
А вот данным методом получение цвета работает как надо.
Админы перенесите тему в другой раздел если я её не там разместил, спасибо.
Вложения
Тип файла: zip last.zip (26.2 Кб, 6 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.08.2017, 15:29
Ответы с готовыми решениями:

glReadPixels
Помогите пожалуйста, пытаюсь фоткать экран - в ответ черные квадраты. вот код int i = 0; while(true) { i++; int...

Когда работает glReadPixels?
Здравствуйте Перевожу свой OpenGL код на Qt фрейиворк, уж очень удобно там создавать контекст с анти-алиасом и вообще много...

glReadPixels + glReadBuffer в OpenEGL
Всем привет, помогите, пжл, разрешить "непонятку". Есть VMWare симулятор BlackBerry PlayBook и уже реальный девайс - планшет Panda. На...

23
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
31.08.2017, 18:19
Студворк — интернет-сервис помощи студентам
Ты уверен, что абсолютно? Убирай из их проекта функционал понемногу, который не нужен и оставь лишь минимум. И поймешь, в чем разница.
Тем более, ты ведь сам открыл в одном креаторе с одной версией куте два разных проекта и получил два разных результата. Значит результат проектозависим. Изучай проект внимательно.
Посмотри void Scene::initGL() у них. Я пока медленно изучаю проект, но сам не могу тебе помочь, ибо у меня он даже не запускается. Да и в GL я полный ноль. Я могу лишь интуитивно подсказать, где может быть проблема и где ее точно нет из того, с чем я уже работал.

Добавлено через 3 минуты
Еще нашел:
C++ (Qt)
1
void Scene::setStates()
Попробуй там отключить часть состояний и проверь снова тот же пиксель. Убедись только, что ты каждый раз можешь повторить результат проверки на 100% и затем отключай и проверяй еще раз.

Добавлено через 2 минуты
Ну и посмотри еще
C++ (Qt)
1
void QtBox::paint()
Там они много где работают с gl функциями и состояниями. Проблема или в том, как рисуется сам объект или в каких-то параметрах самого GL.
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 61
31.08.2017, 18:37  [ТС]
тут возникло недопонимание,
Цитата Сообщение от ygarnui Посмотреть сообщение
так как код абсолютно одинаковый, могу предположить что проблема кроется в версии qt creatora или установленной версии opengl
, это я про
Цитата Сообщение от Горбаг Посмотреть сообщение
У меня на этом проекте creator ругается на то, что Qt собран без -opengl desktop =(
,
теперь класс QtBox, там рисование происходит через glBegin/glEnd, мне данным методом рисовать нельзя,
а можно так как в проекта cube, к сожалению в qt(да и вообще) не нашел рабочего проекта с достаточным описанием или комментариями, который показывает все прелести шейдеров, в том числе и тесселяционных(самый новый тип шейдеров на сколько мне известно).
0
 Аватар для Горбаг
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
31.08.2017, 18:39
Почитай про разницу методов рисования. А даже если нельзя использовать - используй временно, протестируй сам факт того, что именно метод рисования позволяет тебе достать то, что тебе нужно. В чем-то же есть разница.
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 61
31.08.2017, 18:43  [ТС]
а архитектура моего проекта как раз такая как в примере который я выложил, хотя скорее наоборот, в примере архитектура такая как в моем проекте, в частности содержимое класса PaintGeometry(в примере конечно значительно меньше методов, и немного меньше переменных, за счет того что в примере отсутствующий функционал не используется)

Добавлено через 2 минуты
разница в том что шейдеры рисуют через видеокарту,

а glBegin/glEnd рисует через процессор(а потому медленнее), и на сколько мне известно имеется ограничения на входной массив данных для отображения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2017, 18:43

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

Perl + OpenGL Как избавиться от повторного подключения библиотеки OpenGL в модулях
Доброго времени суток! Сегодня решил заняться программированием на языке Perl, используя библиотеку OpenGL :D Возникли вопросы: ...

Какая значительная разница между OpenGL ES 2.0 и OpenGL 3.3 при использовании в Qt
Привет всем! У меня видеокарта имеет поддержку 3.1 версию OpenGL, обновить хочу её с помощью установщика драйвера. У меня такой вопрос:...

Создаю игру с научным уколоном на C++/opengl. Как подключить openGL и добиться кроссплатформенности
Я читал про opengl - для его инициализации нужно создавать windows - окно. Для linux видимо инициализация происходить по другому. как мне...

Чем отличаются готовые сборки Qt под Win + MSVC с OpenGL и без OpenGL?
Ну вопрос собственно в том, что мне не очень понятно, что же в сборке кьюте без опен джел имеется вместо него? Тоесть понятно, что в сборке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru