Войти
ПрограммированиеФорум2D графика и изометрия

Вывести большой Bitmap в окно с помощью openGL (3 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#30
18:58, 3 дек. 2016

Abraziv
По твоей же ссылке и написано, не?


#31
19:02, 3 дек. 2016

То что написано по ссылке приводит к серому экрану и всё. Или же вообще к чёрному, т.е. нифига не работает.

#32
19:21, 3 дек. 2016

Abraziv
Значит у тебя неправильно написан код.

#33
19:23, 3 дек. 2016

Я его приводил выше.

#34
19:46, 3 дек. 2016

Такое ощущение, что gpu просто хватает фрагмент текстуры и начинает заполнять ей всё окно по какому-то своему закону.
Снимок | Вывести большой Bitmap в окно с помощью openGL

void createTexture()
{
    glGenTextures(1, &m_uIdTexture);
    glBindTexture(GL_TEXTURE_2D, m_uIdTexture);

    glTexImage2D(GL_TEXTURE_2D ,0 ,GL_RGBA8 ,m_uCountWindow  ,m_uSizeWindow ,0 ,GL_BGRA ,GL_UNSIGNED_BYTE ,m_puColorBuffer);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 3);
    glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
    glGenerateMipmap(GL_TEXTURE_2D);//generate mipmap
}

#35
20:04, 3 дек. 2016

Может дело в формировании пикселя, ладно я спать.

#36
20:25, 3 дек. 2016

Как выглядит сама текстура?

#37
21:02, 3 дек. 2016

Abraziv
> Может дело в формировании пикселя
Если правильно понял, то дело в текстурных координатах.
Попробуй в paintGL заменить m_uCountWindow и m_uSizeWindow на 1

> Такое ощущение, что gpu просто хватает фрагмент текстуры и начинает заполнять
> ей всё окно по какому-то своему закону
Координаты для обычных 2D текстур должны быть диапазоне в 0..1
Поведение при значениях за пределами 0..1 можно указать с помощью GL_CLAMP GL_REPEAT и т.п.

#38
7:11, 4 дек. 2016

.Z. спасибо за совет, частично помогло. Попробовал использовать картинку вместо моей, всё хорошо. Проверил всё что можно, осталось одно тонкое место, как должны храниться данные для glTexImage2D()? Походу я их храню, как то не так для этой функции. У меня они хранятся следующим образом столбик1, столбик1, столбик3, ...
-Eugene- пока что сложно сказать, она формируется в процессе работы программы. Пробовал сохранить в BMP, то что получилось, в итоге одинакова на экране и в файле.
Походу нужно построчно, снизу вверх.

#39
8:01, 4 дек. 2016

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

+ Показать

#40
8:12, 4 дек. 2016

Транспонировал.
Теперь стало что то похожее на правду но всё равно не то:
Снимок1 | Вывести большой Bitmap в окно с помощью openGL

а надо (цвет не важен)
Снимок2 | Вывести большой Bitmap в окно с помощью openGL

#41
8:15, 4 дек. 2016

Походу дело именно в битмапе, буду думать.

#42
8:25, 4 дек. 2016

Abraziv
Походу он у тебя вверх ногами.
Попробуй перевернуть (сам или координатами)
Картинки смотрятся по разному именно изза цвета. Поэксперементируй с форматами цвета

#43
8:33, 4 дек. 2016

Abraziv
Может замена GL_RGBA на GL_BGRA или GL_ABGR_EXT поможет?

#44
8:43, 4 дек. 2016

Нашёл ошибку в формировании битмэпа =))) Что то вырисовывается: Снимок | Вывести большой Bitmap в окно с помощью openGL
Но всё равно ещё не то !!!
По экспериментировал с форматами, ничего не изменяется.
Альфа должна быть 0xFF для полностью не прозрачного изображения ?

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорум2D графика и изометрия

Тема в архиве.