Executor
> А что с рендербуферами не так?
Ну а зачем их использовать если с текстурами все гораздо проще и есть возможность использовать их? :)
SNVampyre
> > GL_RGBA16
> > GL_UNSIGNED_BYTE
> Пока увидел только это.
реально фейл! >_< Ну, I будет в сети - попробуемс ещё )
SNVampyre
> Вообще не понятно как в таком примитивном расширении можно не разобраться.
а я чо? я ни чо : D Я вообще OpenGL Не люблю и пишумегоубыйцукрайзиса на DX11 : P Правда сегодня любопытство победил и таки чуток поразбирался в OGL - ни чего сложного. По крайней мере кубик с текстуркой нарисовал за 5 минут самообучения )
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, bufferID);
- порядок явно не верный, но я давал ему с обратным порядком код ) И не работало. Короче отхватит сегодня : )
Executor
> На лицо явное не понимание как всё работает, иначе бы не тусовали местами ГЛ
> функции на угад, авось заработает.
да я сегодня покурил доки - всё понятно. Просто кода у меня нет. I в xCode пишет ) Для макоси.
.L
> реально фейл! >_<
Для пустых текстур GL_UNSIGNED_BYTE никакой силы не имеет, а вот GL_RGBA16 это уже интересней.
Весьма исчерпывающая информация:
http://www.opengl.org/wiki/Image_Formats#Depth_formats
http://www.opengl.org/wiki/Framebuffer_Objects
http://www.opengl.org/wiki/Depth_Buffer
http://www.opengl.org/wiki/Renderbuffer_Object
.L
> реально фейл!
В чём? В конкретном случае ни на что это не влияет.
KpeHDeJIb
> Для пустых текстур GL_UNSIGNED_BYTE никакой силы не имеет, а вот GL_RGBA16 это уже интересней.
?
Executor
> В чём? В конкретном случае ни на что это не влияет.
странно. СтОит выставить тип данных в DX чуть не такой и всё летит на ЙУХ.
.L
GL_DRAW_FRAMEBUFFER - это что за чудо?
KpeHDeJIb
Хм... Спасибо, не знал, что у них есть wiki.
Executor
> ?
Если создавать текстуру с NULL вместо данных то формат данных в этом самом NULL глубоко всем параллелен, а вот формат текстуры все таки важен, или что конкретно непонятно в моем высказывании?
.L
> странно. СтОит выставить тип данных в DX чуть не такой и всё летит на ЙУХ.
Если ты в текстуру будешь данные заливать, то не всё равно, а в данном случае 0, поэтому ни на что не повлияет.
Но это относится именно к этому формату, есть форматы с особой интерпретацией, там это будет иметь значение.
KpeHDeJIb
> Если создавать текстуру с NULL вместо данных то формат данных в этом самом NULL
> глубоко всем параллелен, а вот формат текстуры все таки важен, или что
> конкретно непонятно в моем высказывании?
Если NULL и внутренний формат без особой интерпретации, то пофиг какой там у него формат выставлен. Поэтому для RGBA16, если не передаёшь данные, пофиг BYTE он там выставил или вообще FLOAT написал.
Dimich
> GL_DRAW_FRAMEBUFFER - это что за чудо?
GL_DRAW_FRAMEBUFFER по сути тоже самое что GL_FRAMEBUFFER.
Первое я бы даже сказал православнее. :)
Почитал спеки ( не ужели, да )
Итак
OGL, юзается тот который будет одновременно работать на мак ос и iOs, судя по всему там на OGL 3 не скоро еще метят … поэтому и 2.7 или какой он там получается :)
Сейчас буду пробовать все как нада делать - для начала, разобрался почему у меня периодически вобще все не работало - оказывается если в xcode 4 сделать перезапуск, а не выключить, подождать пока трэйс выведет program return code и запустить, то либо не создается контекст, либо еще, что то, вобщем экран черный и точка ! поэтому больше 80% синтетических тестов, можно считать fail, хотя бы по этому
Итак есть принципиальные вопросы на которые я быстрей тут получу ответ чем нагуглю
1 я вот не заметил вобще как таковой разницы между выводом в varyng out и между gl_FragColor в обоих вариантах в втором проходе выводиться все то что записали собствено так как нуно ?
2 GL_DRAW_FRAMEBUFFER позволяет не использовать glDrawBuffers/glReadBuffers так написанно в спеке или я не так понял ?
I
Ты лучше давай без экспериментов.
Пиши как все, ибо под это "как все" пишутся дрова. Все пишут как я написал выше, и это работает. Если что-то ещё где-то заработает, то замечательно, но это будет уже экспериментальный код, который где-то да слагает. Увы, это главная фича OpenGL сегодня.
SNVampyre
вопрос не совсем по теме
window 7 нету glGenFramebuffers и glext.h и wglext.h так же нету - стоит ogl 1.1 что делать ?
I
> window 7 нету glGenFramebuffers и glext.h и wglext.h так же нету - стоит ogl 1.1 что делать ?
Скачать с сайта glext.h, вставить в проект. Скачать дрова с сайта производителя GPU для твоей видеокарты, установить. Получить профит.
SNVampyre
и теперь по теме но без глубины
общая схема рендера в FBO
- glGenTextures
- glBindTexture
- ставим параметры
- glBindTexture(GL_TEXTURE_2D, 0);
- glGenFramebuffers
- glBindFramebuffer
- glFramebufferTexture2D
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
далее в рендере уже
- glBindFramebuffer
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- делаем что нада
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
второй проход
- glDisable(GL_DEPTH_TEST);
- glActiveTexture ( GL_TEXTURE0 );
- glBindTexture ( GL_TEXTURE_2D
- делаем что нада
имеем графики на экране с первого прохода
все верно ? если мне нужен будет еще проход принцип будет таким же как у первого то есть - (биндФреймБуфер, ID), чистка, рисуем, (биндФреймБуфер 0)
то есть как я понимаю все это
- создали текстуру
- привязали ее к фреймбуферу
в рендере
- прибиндили фреймбуфер
- очистили в текстуре окторая прибиндина - глубину и цвет
- нарисовали все в текстуру
в след проходе
- взяли текстуру и отрисовали ее содержимое
I
Всё правильно, только бинди нормально. Даже если на какой-то сферической видеокарте в вакууме у тебя заработает как ты написал, то всё равно.
Executor
> Если NULL и внутренний формат без особой интерпретации, то пофиг какой там у
> него формат выставлен. Поэтому для RGBA16, если не передаёшь данные, пофиг BYTE
> он там выставил или вообще FLOAT написал.
Пост не читай @ сразу отвечай. Спасибо что повторил то что я сказал :)
Тема в архиве.