Только что поставил заново (после того, как откатил неделю назад), все нормально поставилось. Артефакты, конечно, на месте. К тому же, по ссылке описана совершенно другая проблема.
Ну а смысл? Как я вижу, никакие преимущества многопоточности (та же разделяемая память) тут не удастся применить. Ну разве что накладные расходы немного поменьше.
Суть glDrawElements в том, что используется ещё один буфер. Последний аргумент glDrawElements есть либо указатель на него в «клиентской памяти», либо offset в текущем привязанном GL_ELEMENT_ARRAY_BUFFER (аналогичные вещи происходят в glVertexAttribPointer, только там GL_ARRAY_BUFFER).
В этом буфере хранятся индексы.
Например, если в массиве атрибутов хранятся числа: 0.0 1.0 2.0 3.0
А в element array — 0 1 2 2 3 0
То в результате glDrawElements(GL_TRIANGLES, GL_UNSIGNED_SHORT, 6, NULL) на соответствующий вход шейдера придут числа 0.0 1.0 2.0 2.0 3.0 0.0.
Более близкий пример — тот самый формат .obj. Только там тройные независимые индексы (вершина/нормаль/uv), OpenGL же такого не позволяет.
В каком-то смысле это обобщенный triangle strip/triangle fan/что там ещё есть не знаю даже. Вершины нередко дублируются в разных треугольниках, так что память экономится прилично. Да и последние вершины в кеш наверняка попадают, так что и прозводительность должно положительно влиять.
Я выразился неправильно. Бинарник вполне можно получить с помощью Android NDK, и даже запустить (из консоли). Но можно ли сделать «нормальное» приложение, запускаемое из меню, без джавы?
Однако Android NDK все равно работает поверх джавы. Тот же Native Activity всего лишь оборачивает соотвествующий класс джавы. Совсем в обход не получится.
Когда я в прошлый раз баловался с WOL, я отправлял пакеты на broadcast адрес. В самом пакете закодирован MAC-адрес сетевой карты, так что ничего лишнего не проснется. Зачем тут хитрить с ARP?
По идее реализация поддержки вебсокетов не должна быть очень сложной. В стандарте делается акцент на то, что это не HTTP, хотя и похож на него, что сразу отметает кучу проблем с Keep-Alive типа «а что если обычное HTTP-соединение превратится в WebSocket через несколько запросов, и наоборот».
Надо нажать «Показать подробную информацию» и прокрутить ниже.
Вольный перевод: «У нас получилось повторить баг с помощью вашего тест-кейса, но пока что мы все ещё перекладываем баг из одной стопочки в другую»
stunnel <---> haproxy <---> (nginx | tornado)
Это как в том анекдоте:
Так тем более надо использовать VBO. Ничего не теряете, а когда память будет выделенная, станет только лучше.
Суть
glDrawElements
в том, что используется ещё один буфер. Последний аргументglDrawElements
есть либо указатель на него в «клиентской памяти», либо offset в текущем привязанномGL_ELEMENT_ARRAY_BUFFER
(аналогичные вещи происходят вglVertexAttribPointer
, только тамGL_ARRAY_BUFFER
).В этом буфере хранятся индексы.
Например, если в массиве атрибутов хранятся числа:
0.0 1.0 2.0 3.0
А в element array —
0 1 2 2 3 0
То в результате
glDrawElements(GL_TRIANGLES, GL_UNSIGNED_SHORT, 6, NULL)
на соответствующий вход шейдера придут числа0.0 1.0 2.0 2.0 3.0 0.0
.Более близкий пример — тот самый формат .obj. Только там тройные независимые индексы (вершина/нормаль/uv), OpenGL же такого не позволяет.
В каком-то смысле это обобщенный triangle strip/triangle fan/что там ещё есть не знаю даже. Вершины нередко дублируются в разных треугольниках, так что память экономится прилично. Да и последние вершины в кеш наверняка попадают, так что и прозводительность должно положительно влиять.
./sleepsort.bash 5 3 6 3 6 3 1 4 7