LINUX.ORG.RU

Не могу победить «hello world» на opengl

 ,


3

4

Добрый вечер!

Решил наконец попробовать накодить что-нибудь с использованием opengl, нашел неплохой туториал, и начал писать вывод треугольника.

Беда в том что я не вижу этого самого треугольника, несколько раз пробежался по ману и коду примера, но без толку. Прошу помощи ЛОРа.

И раз такая тема пошла хочу спросить: к чему такие сложности с шейдерами сейчас? В тех же туториалах от Nehe треугольник можно нарисовать почти тремя вызовами glVertex(). Почему такой способ считают устаревшим?

Не знаю OpenGL и в чём у тебя ошибка, но нагуглил пример который у меня заработал, и там тоже рисуется треугольник и используются шейдеры:

https://ideone.com/4c08nD

Возможно поможет...

fsb4000 ★★★★★
()

Шейдеры работают в среде с кучей параллельно работающих процессоров, а, насколько я понял, вызовы glVertex и такое прочее - это работа центрального процессора, что как бы не нужно если есть видеокарта.

anonymous
()

OpenGL 3.3 устарел. Если нет необходимости обеспечить работу на видяхах старше 2012 года, то изучай OpenGL 4+.

peregrine ★★★★★
()

к чему такие сложности с шейдерами сейчас? В тех же туториалах от Nehe треугольник можно нарисовать почти тремя вызовами glVertex(). Почему такой способ считают устаревшим?

Чтобы не выходить из GPU - самое тонкое место (при адекватном кодинге) всегда было взаимодействие CPU и GPU.

peregrine ★★★★★
()

Попытался скомпилировать твой пример с активированным отладочным контекстом OpenGL и получил:

«GL_INVALID_OPERATION in glVertexAttribPointer(no array object bound)»

Соответственно, после создания VAO нужно добавить строку:

glBindVertexArray(VAO);

goto-vlad
()
Ответ на: комментарий от goto-vlad

я вообще нуб еще похлеще тс-а. но прст ты не понял что я имею ввиду и и видать моего юмора :)

dima1981
()
Ответ на: комментарий от MOXHATKA

Я вообще замахнулся на свой компилятор уровней для quake engine, но для начала решил просмотрщик карт написать.

shooter93 ★★
() автор топика
Последнее исправление: shooter93 (всего исправлений: 1)
Ответ на: комментарий от peregrine

Если нет необходимости обеспечить работу на видяхах старше 2012 года

Прочитав сие, я со своей GeForce 9600 GT почувствовал себя как-то неуютно...

hobbit ★★★★★
()
Ответ на: комментарий от shooter93

Там почти все екстеншины есть для четвёрки.

robus ★★★★★
()
Ответ на: комментарий от hobbit

Т.е. до этого поста ничто не предвещало беды?

robus ★★★★★
()
Ответ на: комментарий от hobbit

Ну так у меня была 8800 когда-то, почему была, до сих пор есть, правда в шкафу, на полочке. Заменил её на 660, которую затем заменил на 1060, вместе с 4k монитором. У потребителей OpenGL и DirectX обычно достаточно новое железо, играть то надо.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

OpenGL 3.3 устарел. Если нет необходимости обеспечить работу на видяхах старше 2012 года, то изучай OpenGL 4+.

Да? А в чём принципиальная разница между 3.3 и 4.*?

Stil ★★★★★
()

OpenGL устарел. Если нет необходимости обеспечить работу на видяхах старше 2012 года, то изучай Vulkan.

anonymous
()
Ответ на: комментарий от anonymous

OpenGL устарел. Если нет необходимости обеспечить работу на видяхах старше 2012 года, то изучай Vulkan.

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

andreyu ★★★★★
()

Что за дикая смесь glfw и glew?

GLFWwindow *window = glfwCreateWindow(800, 600, "Hello world!", NULL, NULL);
glfwMakeContextCurrent(window);

glewExperimental = GL_TRUE;
glewInit();

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Насколько я помню, в полной англоязычной версии того туториала, который ковыряет ТС из этого Hello World-а делают игрушку с ракеткой, шариком и кирпичами, так что в дальнейшем, возможно им и нужен glew.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Не, по вулкану пока мало информации, для новичков трудно.

Лол, в вулкане новичкам будет трудно независимо от количества информации.

Stil ★★★★★
()

2017й год, а нубы в OGL по старинке пытаются все делать через glVertex и прочее...

Прежде чем браться хотя бы за хелловорлд, надо понять как современная графика вообще работает.

Вот тут примерно описано, хоть и про d3d: https://habrahabr.ru/post/129166/

Уже сто лет как везде полностью программируемый конвейер.

lovesan ★★
()
Ответ на: комментарий от andreyu

glew не умеет в окошки. Он для загрузки расширений OpenGL.

peregrine ★★★★★
()
Ответ на: комментарий от Kuzy

Они для разных целей.

Создать окно можно и с помощью glew. А по коду ТСа я вообще не могу понять, зачем ему оба фреймворка одновременно.

Самофикс: похоже я попутал glut и glew.

andreyu ★★★★★
()
Последнее исправление: andreyu (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.