Russian Qt Forum
Апрель 29, 2024, 15:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 716 717 [718] 719 720 ... 761
10756  Компиляторы и платформы / Linux / OGL (XGL?) для Linux : Декабрь 21, 2009, 17:45
Добрый день

Неожиданно получил еще один заказ перевести программу на Linux. Задача небольшая но использует OGL. Подскажите как его на Линукс (RedHat) ставить. Конечно гуглю но ничего конкретного пока не нашел.

Спасибо
10757  Программирование / С/C++ / Re: Открыть проассоциированный файл - пусто в *argv[] : Декабрь 21, 2009, 17:17
Ну так запускающий делает дабл клик по файлу, и командную строку не открывает.
Уточняю на всякий случай - запускается на сам бинарный файл, а пакет, его содержащий.
Ясно, запускается bundle/package. Так откуда же возьмутся аргументы командной строки если их никто не давал? Ну и будет argv[0] имя самой программы (не bundle) - и все.
10758  Qt / 2D и 3D графика / Re: освещение в OpenGL : Декабрь 21, 2009, 17:12
Тааак. я теперь буду разбираться с построением нормалей, полагаю что нужно строить те которые под пунктом 1? а есть какие-нибудь тонкости, на которые мне необходимо сразу же обратить внимание при изучении материала и еще, может в какую-то сторону дополнительно нужно "покопать"?
Не увлекайтесь всякими "умными библиотеками" да как чего подключить и.т.п. - это все фуфло. Выучите 2 вещи: скалярное и векторное произведение. Твердо и капитально. Сделайте свой прикладной класс чтобы работать в векторах а не месить все время x, y, z. Для начала все. Вот пара задачек, если Вы сможете записать решения в 1 строку кода - Вы и нормали построите

1) Треугольник задан 3-мя точками (p0, p1, p2). Найти его площадь

2) Есть точка P (хотя для решения она не нужна). В этой точке есть вектор нормали к поверхности N и есть направление на источник света  L (от точки к источнику). Найти отраженный вектор света V (угол падения = углу отражения)
10759  Программирование / С/C++ / Re: Открыть проассоциированный файл - пусто в *argv[] : Декабрь 21, 2009, 16:55
Здравствуйте. Требуется открыть имеющийся файл написанной программой. В windows и linux вопрос решается получением имени файла из argv[1]. Но в макоси там пусто! Собственно вопрос - где брать имя открываемого файла под МакОсом?
Там же, из argv[1] (2 и.т.п). Если пусто - то это проблемы запускающего который не подал аргументы командной строки
10760  Qt / 2D и 3D графика / Re: освещение в OpenGL : Декабрь 21, 2009, 16:00
Да, недавно дошло до меня про нормали, но как я понимаю их нужно вычислять, нужно знать формулу ... надо делать. А можно ли обойтись без нормалей и еще хочу уточнить, вот Вы пишите: надо задать нормали к вертексам (напр. с помощью glNormal..), а как можно еще их вычислить?
Хммм... ну вообще-то 3/4 работы по построению модели - это именно вычисление вертексных нормалей (в различных вариантах) и только 1/4 (часто меньше) - сама геометрия  Улыбающийся
На практике используются 3 способа вычисления нормалей:

1) Аналитический. Напр. для сферы нормаль к вертексу = (vertex_position - center).normalize()

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

3) Через осреднение всех (или некоторых) нормалей к полигонам в которые данный вертекс входит. Это дает нормали худшего качества чем 1, зато метод универсальный.

Не существует какого-то "легкого удобного" способа, ну разве что если это стандартная модель строится ф-цией библиотеки - но на этом далеко не уехать
10761  Qt / 2D и 3D графика / Re: освещение в OpenGL : Декабрь 21, 2009, 15:29
Если используется GL_SMOOTH, то надо обеспечить/задать нормали к вертексам (напр. с помощью glNormal..). В Вашем тексте я этого не увидел
10762  Qt / Пользовательский интерфейс (GUI) / Re: Вставка виджетов в текст QTextEdit : Декабрь 20, 2009, 21:56
ну я так понимаю никто не знает))
Хммм... а не много ли Вы хотите? То есть QTextEdit в который можно вставлять картинки, они будут обтекаться текстом в различных вариациях - довольно близко к профессиональной программе верстки, типа PageMaker Улыбающийся

хоть скажите с чего начинать его писать лучше
"В общем случае" - ни с чего, забыть как неосуществимую мечту. Потому что классов/инструментов таких нет - значит нельзя Улыбающийся А "в частном случае" - сделать конкретную разметку конкретной страницы и повставлять текст кусочками, свой контрол для каждого. И вообще, поубавить притязания Улыбающийся
10763  Qt / Общие вопросы / Re: Параллельные вычисления (проблемы) : Декабрь 20, 2009, 21:43
а почему не загрузить весь файл за раз?
Все файлы грузятся полностью и читаются всего 1 раз. Но не для всех распакованное содержимое держится в памяти, для многих оно хранится постранично. Если памяти достаточно - все будет в памяти, нет - будет подкачиваться с диска.

Согласен. Я так понял, это все же кластер?
Не имею цели подколоть, но не знаю что такое кластер (здесь), правда Улыбающийся Ну например, выходной имедж имеет 1000 строк. Пользователь может задать число полос, напр 4. Значит будут запущены 4 копии. Первая получит задачу сделать первые 250 строк, вторая - вторые 250 и.т.п. Возможно какая-то копия не рассчитает ни одного пикселя - нечего считать, но результат (черный пустой имедж) все равно будет. То есть разбивается "тупо", по числу строк. Но эта задача давно решена и успешно эксплуатируется.

А этот алгоритм, правильно спроектирован? Может корень проблемы в нем? Возможно вы боретесь с последствиями неправильной разработки алгоритма?
Да кто ж его знает где этот корень?  Улыбающийся Очень может быть я выбрал не лучший путь но в данном случае любой имеет трудности.

niXman, мы весьма отвлеклись от темы, давайте переключаться в личку, с удовольствием отвечу на любые Ваши вопросы.
10764  Qt / Общие вопросы / Re: Параллельные вычисления (проблемы) : Декабрь 20, 2009, 20:30
1. Данные общие?
2. Во время работы одной нитки, другая может изменить общие данные?
3. Если все же синхронизация ниток с общими данными не нужна, может каждой нитке передать копию данных? Ну и что, что памяти съест больше. Ныньче 2-4 гига на процесс не трагедия)
Подавляющее большинство исходных данных общие и "только чтение" (хотя они и требуют блокировок для подгрузки с диска). Проблема в том что нет четкой "мишени" - в начале расчетов неизвестно какие пиксели и как считать, это выясняется по ходу дела. Сетевой вариант задачи живет долго и вполне счастливо, он разбивает результат(изображение) на N полос (или кадров) и запускает свою копию для каждой части. При этом однако дублируются все исходные данные. Склеивание полос, передача исходных данных по сети и результатов обратно - все это в сумме не так уж дешево. Часть данных строится динамически и это будет тоже повторено N раз. Уязвимое место - относительно короткие расчеты (особенно превью), тогда запуск сетевой бандуры не окупает себя.  В общем пришли к банальной истине: задача должна иметь как сетевой вариант, так и поддержку multi-threading  Улыбающийся

10765  Qt / Общие вопросы / Re: Параллельные вычисления (проблемы) : Декабрь 20, 2009, 17:33
Заметьте разницу Подмигивающий
При таком шикарном MAX_K (100000000) пройдет все что угодно - вот только где ж мне его взять если по задаче это от 50 до 5000  Плачущий
10766  Qt / Общие вопросы / Re: Параллельные вычисления (проблемы) : Декабрь 20, 2009, 15:29
что такое OMP ?
OpenMP  Улыбающийся
смею заметить, то, что если время тратиться на синхронизацию, то это говорить лишь об одном - слишком часто происходит блокировка/деблокировка. в этом случае, не стоит расчитывать на чудеса, а спроектировать иной алгоритм.
В данном конкретном случае под "синхронизацией" понимается "старт и финиш" задачи для которой привлекаются все нитки. Это расчет одного пикселя который может состоять из N (100, 200, 400 в тестах) подрасчетов (распределяемых между нитками). Каждый подрасчет может быть более или менее трудоемким (зависит от многих исходных данных). Проблемы возникают из-за того что время расчета пикселя достаточно мало (меньше миллисекунды).

в параллельном/распределенном программировании не новичек, но у меня никогда не было похожей проблемы. возможно ваш алгоритм именно таким образом и должен работать, возможно его и не перепроектируешь, и еще много раз возможно...
Понятно что заманчиво давать ниткам расчеты целых пикселей (а не "подрасчеты"). Но при этом мне надо гораздо больше распараллелить, появляется очень много массивов (где была 1 переменная), появляются конструкции указателей *** (понимаемые самим автором с трудом). Также резко нарастает число блокировок и их вес. Не берусь предсказать будет ли "более высокоуровневый подход" более эффективным, но что усилий и времени он съест много - это точно.

И Вы не волнуйтесь, мне там еще с параллелизацией пахать и пахать. Вот например "запекание фотонной карты" - дивный алгоритм который я не знаю как положить на нитки. Мы с Вами обязательно это обсудим Улыбающийся
10767  Qt / Установка, сборка, отладка, тестирование / Re: Установка Qt на Mac Snow Leopard : Декабрь 20, 2009, 15:01
бтв у меня сейчас mac os 10.6, qt 64бит cocoa, полёт нормальный
Это радует! И все встало нормально? Как ходят старые проекты под 64? Есть ли проблемы с расчетной частью и использованием сторонних библиотек?

Заранее спасибо
10768  Qt / Установка, сборка, отладка, тестирование / Re: Установка Qt на Mac Snow Leopard : Декабрь 20, 2009, 14:53
Цитировать
(вещь красивая но бесполезная)
а почему бесполезная? или в мас-е он какой-то особенный?
Особенный или нет - не знаю, потому что сравнить не могу (Qt стоит только на Mac). А бесполезный - моя личная точка зрения, не хочу чтобы кто-то мне чего-то наколбасил а я потом разбирайся, лучше я сам все сделаю как мне удобно. А если нужны формы - для этого есть designer (с дальнейшей загрузкой из ресурсов).

И еще просьба: давайте не будем забивать тему, для обсуждения creator'а можно создать новую (если есть желание).
10769  Qt / Общие вопросы / Re: Параллельные вычисления (проблемы) : Декабрь 20, 2009, 14:07
Проверил с компилятором Intel
Результаты для 4 ниток, 2 процессора Intel Xeon по 2 ядра
Цитировать
                 1_100   1_200  1_400  2_100  2_200  2_400
---------------------------------------------------------
No threads      16       32       63      62      118     230
Custom impl.   19       28       46      50      79      135
GCC + OMP      18       28       48      57      87      149
Intel + OMP     10       18       35      32      57      108
В таблице время в секундах, колонка соответствует 1 тесту, напр. 2_200 значит: тест 2, выполняется 200 вычислений на точку. Сами тесты (1 и 2) отличаются трудоемкостью единичного вычисления.

Придется использовать Intel хотя забот с ним более чем достаточно и компилирует он совсем не быстро. Досадно что GCC проигрывает с таким разгромным счетом, но надо заметить что это OSX, т.е. POSIX. Судя по исходникам GCC 4.4, для POSIX используется простая реализация семафора (mutex + pthread_cond_wait). Для Linux используется гораздо более изощренная техника фьютексов (futex) так что там результат может быть совсем иным.
10770  Qt / Установка, сборка, отладка, тестирование / Re: Установка Qt на Mac Snow Leopard : Декабрь 20, 2009, 13:50
Я пока на 10.5 (леопард без снега  Улыбающийся), так что извините если посоветую невпопад

1) Не спешите все сразу вставить. Зачистите все и поставьте SDK, просто инсталлером ничего не прописывая. После этого у Вас должны ходить все examples и Вы сможете создавать Xcode проекты с помощью 

qmake -spec macx-xcode example1.pro

2) Ставьте Creator (вещь красивая но бесполезная), он тоже должен пойти

3) Распакуйте исходники куда-нибудь - просто чтобы подсмотреть там что-то. Как собирать "статически" - не знаю и терять время не хочу, все равно скоро надо переходить на 10.6 а в недалеком будущем на Cocoa
Страниц: 1 ... 716 717 [718] 719 720 ... 761

Страница сгенерирована за 0.066 секунд. Запросов: 23.