Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16

glReadPixels

28.08.2012, 15:59. Показов 3233. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, пытаюсь фоткать экран - в ответ черные квадраты.

вот код
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int i = 0;
    while(true)
    {
        i++;
    int H, W;
   H = GetSystemMetrics(SM_CYSCREEN);
   W = GetSystemMetrics(SM_CXSCREEN);
 
        size_t length = W * H * 3; 
        byte *pixels = new byte[length]; 
        glReadPixels(0, 0, W-1, H-1, GL_RGB, GL_UNSIGNED_BYTE, pixels);
 
        FIBITMAP* Image = FreeImage_ConvertFromRawBits(pixels, W, H, 3 * W, 24, 0x0000FF, 0xFF0000, 0x00FF00, false);
 
        char buf[20];
        itoa(i, buf, 10);
        strcat(buf, ".bmp");
        FreeImage_Save(FIF_BMP, Image, buf, 0);
 
        Sleep(5000);
    }
Проблема именно в glreadpixels - в массиве нули.
Если ручками его заполню или еще чем - битмап формируется нормально.
Весь гугл перерыл. Говорят проблема в не том буфере, пробовал glreadbuffer(GL_FRONT), GL_BACK - туда же - эффекта ноль( Кому не трудно, помогите.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.08.2012, 15:59
Ответы с готовыми решениями:

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

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

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

9
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
28.08.2012, 16:16
Я правильно понял, что ты хочешь получить весь экран? А приложение полноэкранное при этом?
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16
28.08.2012, 16:27  [ТС]
Да, на весь экран
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
28.08.2012, 16:33
glGetError() что говорит? И это, ты же сначала рисуешь и уже потом считываешь?
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16
28.08.2012, 16:53  [ТС]
GL_INVALID_OPERATION

Нет рисую не сам, но приложение на весь экран и точно рисуется через opengl.
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
28.08.2012, 17:09
А откуда берется контекст? Вообще стоит подробней осветить взаимодействие с рисующим приложением.
0
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16
28.08.2012, 17:13  [ТС]
Я не разбираюсь в opengl, этот код по кусочкам собирал неделю в интернете, сам я по части .net приложений больше. Задача появилась ухватить скриншот, но не десктопа, а именно приложений не юзающих буфер экрана. Например из того же half life или еще чего на opengl
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
28.08.2012, 17:26
Как бы из чужого контекста средствами opengl считать пиксели нельзя, нужно смотреть в сторону каких-нибудь системных вызовов.
1
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16
28.08.2012, 17:28  [ТС]
плохо конечно. спасибо.
а конкретнее нет какой нибудь ссылочки или еще чего, чтоб подробней знать где искать решение?
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
28.08.2012, 17:47
К тому же ты не задаешь GL_PACK_ALIGNMENT никак, даже если бы можно было читать пиксели таким методом, ты бы не получил корректного результата.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.08.2012, 17:47
Помогаю со студенческими работами здесь

OpenGl в Qt, glReadPixels
Значит есть такая проблема с методом glReadPixels, при рисовании через шейдеры он не работает так как написано в темах где я его нашел, а...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru