SNVampyre
так теперь про глубину
разница, между прошлым описанием, в том, что мы должны создать еще рендер буфер и его указать фреймбуферу как буфер глубины
бинд остается такой же
glBindFramebuffer (GL_FRAMEBUFFER, ID),
glViewport (0, 0, width, height),
glDrawBuffer (GL_COLOR_ATTACHMENT0),
glReadBuffer (GL_COLOR_ATTACHMENT0);
?
еще вопрос про то куда рендерить в смысле уже в шейдере как верно делать
вот так
#extension GL_EXT_gpu_shader4 : enable varying out vec4 gbuffer; void main (void) { gbuffer = vec4 ( …); }
или так
void main (void) { gl_FragColor = vec4 ( normal*0.5, depth); }
меня интересует, вобще какой из подходов православней и в чем отличие вобще ?
Я бы на твоем месте почитал бы основы для начала, такая каша в голове что я не понимаю как ты собираешься ее утрясать не обращаясь к статьям для начинающих.
PS. А да, и вампира можешь особо внимательно не слушать, он с головой в ссоре, начни лучше с туторов по OpenGL и GLSL которые сможешь найти, желательно на православных ресурсах.
I
Второй вариант - это твой вариант. Это GLSL 120.
Первый вариант - это бред.
Если писать для GLSL 130, то писать "out vec4 gbuffer;" и цеплять выходную переменную через glBindFragDataLocation (handle, 0, "gbuffer");
Тебе это не нужно.
SNVampyre
Угу, спасибо, я и делал цеплянье через glBindFragDataLocation, просто интересно было, как верней делать )
I
> просто интересно было, как верней делать
Как вернее делать, написано в glslangspec120 и glslangspec130. Первое работает на твоём OpenGL 2.1, а второе на OpenGL 3, которого у тебя, как я понял, нет. Так что используй вариант GLSL 120. Разница между ними как между SM2 и SM4.
SNVampyre
Еще вопрос - назрел, но ответа вменяемого не на гуглил ( в статьях для совсем маленьких просто пишут, что эти расширения были утверждены, тогда то и тогда то )
Интересует такой вопрос, в чем разница между EXT/ARB и просто АПИ ? можно ли взять какие то дефайны или АПИ вызовы из АРБ и смешать с EXT, я интересуюсь как факт - сам прекрасно понимаю, что это не нада делать
I
Можно мешать как угодно, у них адреса одинаковые. Только разные версии бывают на разных версиях дров. На последних поддерживаются все варианты, на старых только EXT. EXT и ARB постепенно уходят из стандарта, но пока используются одинаковые варианты. Скорее всего, если какой-то функции не будет, и она железно войдёт в ядро на твоей платформе, то тебе просто не дадут вставить твои функции с такими именами.
Вообще, самое правильное - это во время получения адресов функций проверять все возможные варианты написания, а в программе использовать одно и то же.
проблема на windows ( это у L, ему не зайти, а у меня, windows не стоит чтобы пробовать )
создал проект, подключилл OpenGL 1.1 из Windows SDK, подключил glext.h. Вызвал метод glGenRenderbuffers и получил ошибку
error C3861: 'glGenRenderbuffers': identifier not found File: opengl.cpp
I
Вобщем для тебя есть вот это:
http://www.gamedev.ru/code/articles/?id=4267
На всех операционных системах то же самое. Только если на виндовс всегда понятно какие функции в ядре системы, а какие нет, то под линуксом и маком полный зоопарк, когда дрова могут менять gl.h. Странно что ты как-то "работал" с OpenGL не зная как прицеплять расширения.
SNVampyre
На маке все из коробки )
UPD не дочитал статью ! )) пробуем ;)
I
> На маке все из коробки )
Ну правильно, и на разных версиях мака, на разных версиях видеокарт - везде разные gl.h. И под линуксом то же самое. В итоге самый удобный OpenGL только под виндовс, в остальных случаях кретинизм зашкаливающий все пределы.
KpeHDeJIb
> Пост не читай @ сразу отвечай. Спасибо что повторил то что я сказал :)
Значит я просто не понял тебя. :)
I
> в принципе, не чего принципиально нового, я там и не узнал
> "Я бы полнял, если б вылетало! Так оно НЕ КОМПИЛИТСЯ : \"
Вот эти два предложения противоречат друг другу.
SNVampyre
Сори, не дочитал статью, поэтому сообщение удалил ))) сейчас пробуем
I
Возьмите glew/sdl или ещё чтонить подобное и не парьтесь.
> OGL, юзается тот который будет одновременно работать на мак ос и iOs, судя по
> всему там на OGL 3 не скоро еще метят … поэтому и 2.7 или какой он там
> получается :)
Там есть GL3 расширения? ARB FBO например ты везде юзаешь.
> Интересует такой вопрос, в чем разница между EXT/ARB и просто АПИ ? можно ли
> взять какие то дефайны или АПИ вызовы из АРБ и смешать с EXT, я интересуюсь как
> факт - сам прекрасно понимаю, что это не нада делать
Категорически нет!
Никто тебе не гарантирует, что дефайн GL_EXT_ABC и GL_ARB_ABC будут одинаковыми.
Мешать функции тоже нельзя. Такое может взлететь только в специфичных случаях и то никто ничего при этом не будет гарантировать.
Если ты юзаешь например ARB_FBO то мешать его с EXT_FBO не нужно.
Тема в архиве.