|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
||||||||||||||||
Попытка сделать змейку)16.11.2017, 02:31. Показов 8035. Ответов 125
Всем привет, может кто-нибудь посмотреть код мой и посоветовать дельного чего, уверен - много косяков у меня. Вот код:
Добавлено через 2 часа 37 минут Нашел проблема по поводу, того, что 2 сегмент на рисуется, на самом деле рисуется, просто первый рисуется на месте головы, а второй рисуется на месте 1 сегмента... не знаю как теперь поправить это...
Добавлено через 33 минуты То есть я делаю неправильно - у меня первый и второй сегмент в одном месте рисуются, а вот как сделать по-другому уже второй час голову ломаю :/ Добавлено через 1 час 23 минуты
0
|
||||||||||||||||
| 16.11.2017, 02:31 | |
|
Ответы с готовыми решениями:
125
Как сделать змейку на c++ ?
Как сделать такую змейку |
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 23.11.2017, 23:27 [ТС] | |
|
Спасибо)
Добавлено через 15 часов 31 минуту Сложный пример однако у вас Много информации, понятно, что подписано всё..) но.. А если взять самый простой пример? то есть вывод точки на экран. Сначала нужно инициализировать glew, потом создать шейдеры, загрузить их, скомпилировать, прикрепить, связать их с программой, использовать. А дальше уже что-то с буфером идет. Так? Я просто обычно в OpenGL использовал только несколько функций... Display,Reshape,Keyboard. Ну и естественно все начальные инициализации glut. А вот куда вставить эту функцию с инициализацией полной шейдера не понимаю, так же как и glewInit() потому, что я ее в main() вставил, но ошибка не пропала(
0
|
|
| 24.11.2017, 11:51 | |||||||
|
На C++ не хочет без VAO работать, пришлось добавить. Либо я что-то не так делал. Я сделал минимальную программу, которая рисует точку размером 10 пикселей с помощь VBO и VAO. Среда VS2015, FreeGLUT: DrawingPointUsingVBOAndVAO.zip
Памятка с настройками проекта. Для FreeGLUT нужно создавать тип приложения в VS "Win32 Console Application" (с отмеченной галочкой "Empty Project"). Для данного набора библиотек в папке "Libs" из примера выше настройки должны быть такими:
1
|
|||||||
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 24.11.2017, 13:02 [ТС] | |
|
Огромное вам спасибо) сейчас гляну!
Добавлено через 10 минут Код запустился хотя бы Ура) Оказывается я либы еще подключал не в правильном порядке...не в самой программе, а имеено в линкере :/ Жесть) А есть разница между glew32.lib и glew32s.libСпасибо, даже если пример простой, много незвестного) например все эти логи и проверки на ошибки ) еще vbo и vao но все равно буду пробовать ваш код менять, и смотреть на результат) спасибо)
0
|
|
| 24.11.2017, 13:23 | ||||||||||||||||||||||||||||
|
У меня небольшие ошибки есть. Из тела main нужно удалить:
Добавлено через 3 минуты Добавлено через 2 минуты Попробуйте изменить программу так, чтобы она нарисовала линию, а потом измените так, чтобы нарисовала треугольник. Нужно будет сначала написать GL_LINES и добавить вершину, а потом добавить ещё вершину и нарисовать треугольник с помощью GL_TRIANGLES
1
|
||||||||||||||||||||||||||||
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 24.11.2017, 18:40 [ТС] | |
|
А получается, что все координаты мы задаем в verticels[]? А gl_Position на нужен, для передачи туда наших вершин из массива? Точнее вроде мы передаем в переменную a_Position две вершины, а потом уже a_Position участвует в формирование gl_Position? Во фрагментном шейдере вроде одна переменная на выход только? То есть цвет нужно менять только в шейдере сейчас? А вот что значит: precision mediump float? Что еще можно сделать ? Пока что еще хочется чего-нибудь сделать)
1
|
|
| 24.11.2017, 19:06 | ||
|
0
|
||
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 24.11.2017, 21:09 [ТС] | |
|
Спасибо, не подскажите что еще можно сделать? Для новичка, конечно. Пока что буду всё на веру принимать, всю инициализацию и сложный код, но потом обязательно разберусь! Куб бы создать с разными гранями, но для этого нужно 12 треугольников? Еще ведь нужно его повернуть, чтобы был вид объемный, и разным цветов грани для лучшей видимости( ведь пока не умею светом пользоваться, все сливаться будет)
0
|
|
| 24.11.2017, 22:43 | |||||||
|
На картинке видно, как работает GL_TRIANGLE_STRIP: Значит, если записать в буфер четыре вершины, то получится квадрат:
0
|
|||||||
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
||||||
| 24.11.2017, 22:51 [ТС] | ||||||
|
Понял, а вот такой тогда вопрос, как можно изменить цвет не в самой шейдере,а в уже где-нибудь в самой программе? нужно переменную в шейдере объявить как in vec4 и туда передать значение? Вы имеете ввиду змейку, просто в длину, или что-то другое? Я пытался квадрат так сделать уже, даже попробовал сделать несколько граней для куба( переднюю и левую) Так же поменял в шейдере вершинном на вход подал vec3, думал для объема нужно. Вот код в общем, но естественно не видно ничего кроме передней грани...
0
|
||||||
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 24.11.2017, 23:00 [ТС] | |
|
0
|
|
| 24.11.2017, 23:42 | |||||||
|
Цвет можно передать двумя способами: 1) через вершинный шейдер в фрагментный (для каждой вершины свой) 2) сразу в фрагментный шейдер с помощью uniform переменной (общий для всех рисуемых вершин) Второй способ через uniform:
0
|
|||||||
| 25.11.2017, 00:12 | ||||||
|
А первый способ - передать цвет для каждой вершине через attribute-переменную в том же буфере, что и координаты, а из вершинного шейдера передать в фрагментный. Тогда цвет будет задаваться для каждой вершины в отдельности, а не один для всех, как в случае с передачей цвета через uniform-переменную.
0
|
||||||
| 25.11.2017, 00:17 | |
|
0
|
|
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 25.11.2017, 01:41 [ТС] | |
|
Спасибо, я уже завтра прочитаю и попробую, просто спать охота - все равно не запомню на сонную голову) Спасибо за помощь, пока что все вроде понятно) Только остался вопрос с этим : precision mediump float - понимаю, видимо что-то нужное, просто понять не могу пока зачем оно, - что с float связанное.... А так завтра попробую раскрасить куб, то есть GL_TRIANGLE_STIP из четырех вершин в разные цвета
0
|
|
| 25.11.2017, 11:18 | |
|
Пропустили букву 'R', так правильно: GL_TRIANGLE_STRIP
Настройка "precision mediump float" задаёт точность вещественных чисел. Она необходима, без неё выдаёт ошибку. Если для расчётов не будет хватать точности mediump, то можно написать highp. Я не знаю, насколько mediump более быстрый в сравнении highp. Пора разобраться с перемещениями. Откройте в этой книге страницу 112. Прочитайте параграф "Перемещение". Сделайте, как там написано, чтобы квадрат отрисовывался со смещением относительно начала координат. Потом я покажу, как перемещать с помощью библиотеки GLM.
0
|
|
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 25.11.2017, 11:45 [ТС] | |
|
Хорошо, сейчас попробую, просто у меня всё утро форум не работал, сейчас сначала закрашу квадрат в разные цвета)
0
|
|
| 25.11.2017, 11:49 | |
|
0
|
|
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 25.11.2017, 11:58 [ТС] | |
|
Немного не понимаю вот эти строки, точнее смысл аргументов:
GLint a_Position = glGetAttribLocation(program, "a_Position"); glVertexAttribPointer(a_Position, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), (GLvoid*)0); glEnableVertexAttribArray(a_Position); GLint a_Color = glGetAttribLocation(program, "a_Color"); glVertexAttribPointer(a_Color, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(GLfloat), (GLvoid*) (2 * sizeof(GLfloat))); glEnableVertexAttribArray(a_Color); Понимаю, что мы получаем расположение атрибут, дальше с указателем что-то... a_Color переменная, где хранится положение атрибута, 3 - сколько переменных в 1 веришине?дальше тип Float, gl_false Не знаю... 5 * sizeof(GLfloat) - это тоже не понимаю, у нас вроде всего 4 раза по 3 веришины, а откуда 5 не понимаю) Выше было 20 - там просто количество переменных переданных в буфер? А тут не знаю... а дальше (GLvoid*) (2 * sizeof(GLfloat))) - вообще ужас Тоже самое и с a_Position Не понятно( Да. результат получился немного другой, как-будто артефакт какой-то ![]()
0
|
|
| 25.11.2017, 12:14 | |||||||||||||||
|
Эти строчки задают настройку для буфера, чтобы шейдер знал какие данные ему забирать с какой позиции в массиве.
Например:
Здесь:
sizeof(GLfloat) - это столько в байтах занимает одно значение в массиве. Потому что offset (он же pointer) и stride по документации должен быть в байтах. Добавлено через 2 минуты
0
|
|||||||||||||||
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
||||||
| 25.11.2017, 12:18 [ТС] | ||||||
|
Понял) То есть мы можем с той же уверенностью сделать так: массив состоит сначала из 3 цветов , а потом двух координат.
И записать:
А что не так с моей программой, какой-то артефакт
0
|
||||||
| 25.11.2017, 12:18 | |
|
Пытаюсь сделать змейку в консоли :)
System.AccessViolationException: Попытка чтения или записи в защищенную память - попытка 2 System.AccessViolationException: Попытка чтения или записи в защищенную память - попытка 3 Попытка сделать рисунок используя graphics.h Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|