Свежие комментарии

Title Comment
мне кажется, что такой

мне кажется, что такой интернет не нужен уже сразу после того, как выясняется что ты не имеешь власти над роутером и фильтрацией портов/трафика на своей стороне.

лучше уж пусть медиаконвертер с парой выходов ставят. на одном - делай чо хочешь, внутри тупо dhcp.
второй - телефон+ТВ, под их контролем и хрен с ним.

А если туда просто

А если туда просто ethernet-кабелем подключиться, то тоже 25 мегабит?

Такой интернет нам не нужен!

После месяца работы с GPON

Провели GPON чуть более месяца назад.
Советы и комменты:
Если в квартире есть подготовленные каналы (кабель-канал, плинтус и т.п.) могу провести оптоволокно до нужной точки. Я например думал что у меня с**и-ремонтники при отделке квартиры телефоную медь в стене хотя бы в гофре проложили, и рассчитывал ОВ прям к центру концентрации техники прокинуть. Оказалось медь втупую в стене замурована в штробе. Пришлось пока ставить в коридоре - вид портит, но есть повод обои переклеить )))) Правда, потом придется за бабло вызывать установщиков чтобы ОВ переварить (текущий хвост без запаса).

Установка: заводят со щитка на площадке электрику и прикручивают на стену розетку; рядом сам роутер. В него воткнуто ОВ, из него к телефонной коробке на площадке вытащен кусок меди. Таким образом, старая мдная разводка внутри квартиры как была, так и осталась. Роутер ZTE F660 с ВиФи. Предлагали бесплатно сделать "патч-корд" от роутера к компу. Сразу предлагают подключить ТВ и Интернет-канал.

Канал Интернета подключили по звонку в службу поддержки (636-0-636). Причем озвучили что включат не ранее подписания договора, для чего необходим прихода агента, но И-нет заработал уже через час. 2 раза договаривался по времени прихода агента, для чего уходил с работы, но человек так и не пришел. Я позвонил в поддержку и попросил отметить что 2 раза продинамили и теперь только в выходные по предварительному согласоанию. Попробовали понаезжать типа отключим - обломились; налегал на двойное нарушение договоренностей, зафиксированных при звонках, которые пишутся, ну чтобы вопрос не возникал в дальнейшем. Больше никто по этому поводу не беспокоил и И-нет работает. По видимому им важнее чтобы деньги за услуги оплачивались )))

Качество работы канала. Подключил 40Мбит. Ви-Фи у этого (или конкретно у моего экземпляра?) роутера слабенький, хотя мощность стоит 100% - свисток в компе мой модем видит на 4 палки из 5 (растояние напрямую - 6-7 метров и одна не несущая стена), и параллельно видит квартиру тремя этажами ниже. По Спидтесту на Ви-Фи средняя скорость 25Мбит вход/25Мбит выход (свисток стандарта 11g). Это после небольшой пляски с настройками роутера.
Сразу после установки была вообще 12/15. Пришлось поймать одного из работников и начать с ним дискуссию. В итоге после ряда звонков их технарям и подключения кабелем напрямую, выяснилось что канал всего 20Мбит ))) Под эту лавочку удалось узнать админский пароль для роутера (причем как писали в ветке на хоботе - он один для всех роутеров в доме). Используя его и осторожные расспросы соседей, немного почистил эфир - отключил Ви-Фи в 3 квартирах которые вообще не используют Интернет, а особо "шумным" сетям уменьшил мощность передатчика (благо спецов немного в подъезде).

Для подключения iPad похоже необходим включенный QoS WMM. По крайней мере, моя "Айпадла" без него к сети не подключается, хотя в списке и видит.

Учитывая возможность удаленного администрирования со стороны МГТС нет возможности настроить роутер под себя. 2 раза пытался пробросить порты для ДЦ; вроде успешно и все работает, но на следующий день настройки роутера удалены. Сейчас нашел небольшой обходняк - если сработает - отпишу

Заметил что при "засыпании" компа (при подключении по Ви-Фи) подключение отрубается и подключается по-новой - примерно 3-4 минуты на все. Проверил настройки ЮСБ и прочие режимы экономии - все отключено. Пока для меня вопрос почему это происходит.

Прыжки скорости есть - скорость может болтаться от 3-х до 25Мбит (по Спидтесту) в пределах 5 минут (несколько последовательных проверок в интервалом в 1 минуту). Причем скачка торрента или ДЦ более-менее стабильная, а вот серфинг может тупить конкретно. Причины - тоже пока неясны.

ИТОГ: завтра ставлю в комп стационарную сетевуху с Ви-Фи стандарта 11n с увеличенными антеннами. попробую приблизиться хотя бы к стабильным 30Мбитам. больше вряд ли, ибо подразумеваю что карта будет видеть больше сетей чем свисток, соответственно "шума" будет побольше.

Да, с матрицами клевее

Да, с матрицами клевее сильно!

ну если ты помнишь, то задача у меня была ровно та же самая,

ну если ты помнишь, то задача у меня была ровно та же самая, только текстуры были не только большие (поменьше чем у тебя), но еще и много (24 в секунду). ВБО были очень быстрее.

У тебя вершин было мало, текстуры были большие и VBO были бы

У тебя вершин было мало, текстуры были большие и VBO были быстрее, я правильно понял?

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

С версии 3.0 это все

С версии 3.0 это все deprecated. И вроде как я видел где то, что в пятой версии fixed pipeline уберут, но найти не могу.

Ну можно же не настолько

Ну можно же не настолько хардкодить. Проще, наверное, псевдокодом:

void
draw_scene()
{
/* Очищаем буферы и выставляем матрицы */
glTranslate(куда-то смещаемся);
glScale(и масштабируемся);
/* ... */
glBegin(GL_TRIANGLES /* например */);
/* Здесь рисуем точки тайлов, вяжем их к текстурным координатам и т.п. */
glEnd();
/* ... */
}

В gluUnProject() строчек 20, можно и с собой потаскать. Хотя, в Qt, возможно, удобнее сделано.

То есть я бы делал так, по старинке, если бы не хотелось заодно скилл прокачать. Пусть там несколько процентов в производительности потеряется, но проще и ширее охват, такой OpenGL уж наверное все драйвера понимают

У меня на имеющих смысл размерах текстур VBO были быстрее в

У меня на имеющих смысл размерах текстур VBO были быстрее в какие-то совершенно адские количества раз. Но это было давно и может быть уже неправда.

зачем закладываться на 1Кх1К? вроде ж все умеют 4К как минимум?

Размер геометрии меняется

Размер геометрии меняется если меняется размер картинки (загрузили и показываем другую).
Потому что тайлы же.

> write() - не ресайзит буфер

> write() - не ресайзит буфер (как я понимаю) т.е. придется думать о его размере.
> Можно, наверное, аллоцировать с очень большим запасом - и не думать.
А разве размер геометрии меняется?

Я не видел как устроены драйвера opengl, но думаю они собирают вызовы glVertex в буфер и копируют по glEnd. Ф-ции заливки чего либо, должны как мне кажется отрабатывать сразу.
Энивэй это будет быстро.

write() - не ресайзит буфер

write() - не ресайзит буфер (как я понимаю) т.е. придется думать о его размере.
Можно, наверное, аллоцировать с очень большим запасом - и не думать.

Аналогия же с CUDA должна рассматриваться более глубоко
- если каждый glVertex вызывает отдельную транзакцию с видеокартой - то это жопа (относительная, конечно, порядка микросекунды или даже половины на транзакцию)
- если glVertex вызывает переключение контекста (в драйвер), но драйвер все собирает в кучу и отправляет одной транзакцией по PCIe, то дело лучше, хотя и контекст переключается наносекунд 100, не меньше.
- если драйвер собирает все эти glVertex в пачку в юзерспейсе и транзакция одна - то время мы тратим только на вызовы библиотеки и без переключения контекстов - и это совсем ерунда.

Т.е. вот с CUDA - скопировать 100 мегабайт за один вызов (да еще и асинхронно, по DMA) - ерунда, а за 100 млн вызовов - не ерунда.

> Т.е. получается, что если я

> Т.е. получается, что если я собираюсь обновлять буфер, то ему надо QGLBuffer::DynamicDraw, а
> содержимое менять, к примеру, через вызовы allocate (а не через write() - чтобы не думать о
> том, сколько у меня в буфере места и влезет ли).

Я так никогда не делал. Обновлял только текстурки. Но судя по докам, надо выставить DynamicDraw и WriteOnly. Я бы как раз использовал Write, он же не трогает остальные кусочки буффера и теоретически не обязан их заливать в видео память. Но есть ли соответствующие ф-ции в OpenGL (что бы обновить кусочек VBO) я не знаю, тут бы в исходнички заглянуть, но строить предположения веселее.

> Не максимально эффективно, но если вершин в пределах пары сотен, то вроде и хрен с ним?
Гонять туда сюда вертексы не эффективно. Кстати, тут тоже самое что и с CUDA. Ну вот 128 треугольничков, это 128 * 3 (для простоты) флоатов по 4 байта. То есть 1536 байт. Скопировать их в видео память можно за 1536байт / 5гбайт в сек. То есть очень быстро.

Захардкодить не получится -

Захардкодить не получится - тайлы же. Не везде предельный размер текстуры 64kx64k :).

Опять же, задача не столько вывести картинку как таковую (это я научился делать уже), сколько вообще разобраться в механике, раз уж такой повод.

А glu - грубо говоря нету (ну то есть можно собраться с, но вроде незачем). Зато есть многочисленные Qt-шные примитивы для матриц 4x4 и подобного.

Я в Qt применительно к OpenGL

Я в Qt применительно к OpenGL не особо, может там как-то все не так, но обычно экранные координаты переводят в координаты сцены с помощью gluUnProject().

Да зачем вам для 4 точек какие-то буфера для вершин применять? Может проще, э-э, захардкодить? Прямо между glBegin() и glEnd() glVertex() и фсе

Вопрос же мой в другом.

Вопрос же мой в другом. Понятно что отрисуется "быстро".
Но будет ли значимая разница между
а) glVertex/glTexCoord на каждый угол и каждую перерисовку (а перерисовка происходит часто)
б) загонянием всего в буфер и перерисовкой буфера уже одной командой.

Значимая - это "на профайлере что-то видно".

Как я уже писал в мае [link],

Как я уже писал в мае, в софтверном OpenGL (который внутри VMWare workstation) меня вообще все потрясло.

Ну то есть там (в Qt) пример с кубиками (6 кубиков, на гранях - 6 разных текстур)
- WinXP в VMWare: первые 5 текстур куда-то подевались, отображается только результат последнего glBindTexture и только на одной грани
- Win7 в той же виртуальной машине - результат последнего bindTexture отображается на всех гранях кубика.

Смешно было.

Это означает, что у меня

Это означает, что у меня полной картины в голове нет - и я прочитать написанное не могу.
А это и есть правда, хожу по этим OpenGL-ям пока с палочкой.

Т.е. получается, что если я собираюсь обновлять буфер, то ему надо QGLBuffer::DynamicDraw, а содержимое менять, к примеру, через вызовы allocate (а не через write() - чтобы не думать о том, сколько у меня в буфере места и влезет ли). Не максимально эффективно, но если вершин в пределах пары сотен, то вроде и хрен с ним?

Верно я мыслю?

64 текстуры (128

64 текстуры (128 треугольников), наверное, даже софтварный OpenGL более-менее быстро будет рисовать. На современных видеокартах вроде бы миллионами (десятками миллионов?) полигонов в секунду меряются.

До-шейдерный OpenGL простой как грабли: выставляем матрицы, рисуем картинку. И так на каждое событие перерисовки. Если нужно помасштабировать и перенести, проще всего изменить матрицу перед отрисовкой (glTranslate, glScale), координаты точек оставить те же

> Документация внятного

> Документация внятного ответа не дает.
А по-моему очень даже дает:
http://doc.qt.digia.com/qt/qglbuffer.html#Access-enum
http://doc.qt.digia.com/qt/qglbuffer.html#UsagePattern-enum
http://doc.qt.digia.com/qt/qglbuffer.html#write

Что до других нюансов то тут можно применять трансформацию ЦПУ, и заливать вертексы в видео память, можно и шейдерами, и лучшего решения пожалуй нет.

Хм. Ну с поворотом - да,

Хм. Ну с поворотом - да, можно матрицами. Ну то есть сейчас у меня на картинку (background) наложен QGraphicsRectItem через который я получаю все эвенты (правую кнопку мыши нажали или там еще что), мне удобнее чтобы и он и картинка были в одних координатах, ну да и этот Item можно тоже повернуть той же матрицей. Другой способ смотреть на мир, хорошо.

Ну хорошо, другой случай - просто новая картинка, скажем меньше (или больше) и ей нужна другая нарезка на тайлы. И вопрос: у меня уже есть QOGLBuffer для вершин, мне его надо совсем убить и создать новый, или можно обойтись меньшей кровью. Документация внятного ответа не дает.

Экспериментами выясню, конечно.

> Вот если у меня Vertex

> Вот если у меня Vertex buffer надо обновить (картинку повернули - размеры поменялись_, то что
> делать:
> - старый убить, новый завести
> - или как-то поапдейтить старый.
Не, это надо матрицами делать. В вертекс шейдере делают обычно 3 матрицы model, view, projection.
Projection - это понятно, и данном случае похоже не нужно
view - обычно это камера
model - преобразование вращения, переноса, маштабирования объекта который рендерим.
Матрицы перемножают с вертексами. Получается "картинку повернули - размеры поменялись".

Не, ну как-то глупо их не

Не, ну как-то глупо их не использовать, если Qt используется во всей остальной программе.
Там же всякие хорошие вещи сделаны, memory management, работа со встроенными типами (вроде QImage), хочется их. Без них - да, тоже можно, но только с большой тоски.

Ну и тут, конечно, есть приколы. Вот если у меня Vertex buffer надо обновить (картинку повернули - размеры поменялись_, то что делать:
- старый убить, новый завести
- или как-то поапдейтить старый.

Документация не дает ответа, исходники - частично дают, но примеров очень хочется.

P.S. Лишний каммент прибил

Так не используйте кьютишные

Так не используйте кьютишные врапперы. Они обычно тонкие, но там наверняка баги есть. Хотя вот OpenCL врапперы мне очень понравились.
В opengl много способов сделать одно и тоже. И с этим сложно что то сделать.

Я уже в той стадии

Я уже в той стадии непонимания, когда собственно OpenGL-ные примеры (которые у всех на GLUT) уже примерно понимаю (в том объеме, который мне нужен, про освещение, к примеру, вовсе не читал) и ступор вызывает уже взаимодействие с Qt.

Ну вот, к примеру, у меня как и у этого чувака не работает glDrawRangeElements с нулевым последним параметром (указателем на буфер индексов). Значит какой-то буфер я не прибиндил (или как-то так).

Но начинаю разбираться, вот нашел тот форумный топик и вижу, что отвечающий там вообще использует нечто под названием QOpenGLVertexArrayObject в котором у него весь контекст, включая шейдеры. Ни в документации (что для Qt5, увы, нормально), ни в исходниках - такого нет и тут я пугаюсь окончательно.

Книжка то нашлась и не одна. Ну то есть по OpenGL3 - я <a hr

Книжка то нашлась и не одна. Ну то есть по OpenGL3 - я уже писал, но я в процессе понял, что на 3-ю версию лучше не рассчитывать, поэтому банально OpenGL Superbible, 4-е издание по Opengl 2.1

Мне понравились оффициальные

Мне понравились оффициальные книжечки красная и оранжевая.
http://www.amazon.com/dp/0321481003/ref=as_li_tf_til?tag=flazx-20&camp=1...

http://www.amazon.com/dp/0321637631/ref=as_li_tf_til?tag=flazx-20&camp=1...

> есть ли смысл связываться с

> есть ли смысл связываться с VBO или 6 пар вызовов glTexCoord2f()/glVertex2f() не будут заметно медленнее?
Заметно медленнее не будет. Может на телефоне разница и была бы, но и то сомнительно.
На десктопе даже фуфельная карточка может много сотен раз показать полно экранную текстурку.
По скольку VBO сидит в памяти то драйверу не нужно пересылать несколько сотен байт геометрии. Но это копейки даже если делать каждый кадр.

VBO не связаны особым образом с шейдерами. Просто glTexCoord2f это старый API, вроде даже deprecated с opengl3.0. но я вроде об этом писал в старом топике.

Туториалы хорошие Nehe. Там вроде постепенно все рассказывают.
Про qtopengl не вкурсе, но думаю разницу быстрее глянуть в сорцах.

А можно вопрос - а в книжка-то нашлась? Без QT, а для общего

А можно вопрос - а в книжка-то нашлась? Без QT, а для общего развития.

PS: из общих соображений - если что-то можно хранить в карте, то лучше там. И рисовать оттуда. Но это, естественно, КО :)

Вы немножко задержались с

Вы немножко задержались с вопросами (мы обсуждаем пост от 1 сентября), вот и нет конкретных ответов.

Ящик этот - давно в бою, как я вам там Windows-флаги посмотрю, если никаких Windows там уже скоро 3 месяца как нет?

Pages

Subscribe to comments_recent_new