Я читаю пиксельные данные из буфера кадров, и все, кажется, работает, для альфа-значение, которое всегда 1,0glReadPixels и альфа-каналы возвращаются 1,0
GLfloat lebuf[areasize * 4];
glReadPixels(xstart, ystart, partw, parth, GL_RGBA, GL_FLOAT, lebuf);
Я установил код создания окна, кроме поддерживать альфа-канал:
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
есть ли другое место, я должен посмотреть для проверки, почему альфа-канал, кажется, 1,0 всего времени? Еще лучше, есть ли другой способ (кроме glReadPixels) получить текстуру в клиентскую память, из фреймбуфера?
редактировать: это как очистить буфер:
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Вы пытались glReadPixels с другим форматом, таким как GL_UNSIGNED_BYTE, вместо GL_FLOAT? На всякий случай это ошибка драйвера? – rotoglup
Вы пытались удалить весь рендеринг и сохранить только glClear и glReadPixels? Является ли поведение одинаковым в этом случае? – rotoglup
Да, я удалил чертежи и только пробовал предмет glCLear, это все еще черный, непрозрачный снимок. Я постараюсь с GL_UNSIGNED_BYTE скоро – kamziro