Ульрих: После установки Guest Additional и DirectX (через защищённый режим), работает вполне сносно. Как раз на уровне тех компьютеров, которые были в год выпуска игры.) Главное не жадничать с оперативкой и процессорами для виртуалки.
Torvald3d: Тут блокирование в смысле разделения на блоки, для локализации данных в кэше. Например, картинка 1000*1000 пикселей разрезается на квадраты по 100*100. И для пяти слоёв берутся соответствующие квадратики, лежащие друг над другом. Почти все стандартные алгоритмы основаны на разделении цельной картинки на фрагменты, чтобы оптимизировать их размещение в памяти. Кстати, это хорошо видно на сложных фильтрах, когда картинка по кусочкам обновляется.
Я изучал SDK для Photoshop CS2. Сейчас может и поменялось что-то, но вряд ли существенно.
Neonoviiwolf: Спасибо! Непосредственно для анимации персонажей мне программа Spriter приглянулась. Тем более, что почти бесплатная. Там тоже и скелетная анимация и прочее. А вот всё скомпоновать... Попробую что-нибудь из adobe.
CC и AnimeStudio для векторной анимации, как я понял по ютубу. Всё очень круто, но мне нужно аналогичное для спрайтовой графики.)
After Effects может и подходит, на ютубе в основном на спецэффекты упор сделан, но он какой-то излишне монструозный. Это как стрельба из пушки по тараканам... И я пока не понял, можно ли анимированные гифки в нём использовать или наборы кадров(спрайтшиты или отдельные файлы для каждого кадра), без их переключения вручную на каждом кадре анимации.
MisterN: Ну да, всё зависит от вариантов использования. Под мои нужны организация по папкам оказалась самой эффективной.
Кстати, в каждой папке лежит файл cover.jpg и плеер обложку показывает при выборе папки. Разумеется, только при переключении вручную, поиск по картинке не сделать.
Николай М: Да, нотификация должна появиться. Потом уже в маркете подтвердить обновление и подтвердить новый список разрешений. Т.е. лишь небольшое неудобство при обновлении.
abcd0x00: Всё, до меня дошло. Я описал ситуацию с перегруженным оператором, там ленивые вычисления не работают, потому что это уже совсем не то, на что похоже внешне.
devalone: В принципе, разные материалы не проблема. Если разбивать поверхность не на треугольники, а на тетраэдры, то можно даже вокруг разбрасывать реальные куски земли. Типа как в Red Faction. Т.е. "копаемые" материалы будут как бы твёрдотельными моделями.
AtomKrieg: Без полного определения типа невозможно узнать размер объекта, так что и рекурсии в принципе бы не случилось, потому что нельзя вставить неизвестно что. Рекурсия это уже вторая проблема, которая не успевает возникнуть, т.к. в первом классе ещё неизвестно определение второго класса. Думаю, в шаблонных классах проблема получилась бы именно с рекурсией, но в не шаблонных классах до рекурсивного определения даже не дойдёт.
Therapyx: предварительное объявление это как подсказка компоновщику, что в этом месте будет использоваться объект указанного класса, но кроме названия этого класса ничего неизвестно. Ни методов, ни размера объекта. Поэтому можно лишь создать указатель или ссылку, но не объект. А в файле реализации необходимо подключить инклюд, чтобы было полное определение класса, чтобы можно было обращаться к методам. Это почти то же самое, что предварительное объявление функции. Сообщаете, что "где-то" есть такая-то функция. Но пока в этом "кое-где" её не реализуете, использовать её будет нельзя.
Therapyx: Чтобы избежать зависимость от порядка следования инклюдов, проще в каждом из двух файлов предварительное объявление сделать. Это особенно заметным будет, когда классов будет не два, а несколько десятков и инклюдящихся в куче других файлов.
Therapyx: "Получается работая с указателями, деллать так можно?"
Чтобы стало можно, нужно сделать предварительное объявление классов. Просто написать "class Cellphone;" перед классов SimCard и можно будет создавать указатель на объект класса Cellphone. И "class SimCard;" перед классом CellPhone. Инклюды инклюдить всё-равно нужно, но при такой записи будет компилировать.
abcd0x00: Это не совсем то, о чём я говорил Я имел в виду код типа: "n = f(Func(A)) || f(Func(B));". Т.е., что Func(A) и Func(B) выполняются до вызова f(Func(A)).
Но теперь я не уверен на 100%, что это действительно возможно, а специально написать подобный код невозможно...
MiiNiPaa: Правая часть - это правая часть. А аргументы - это аргументы. Аргументы могут вычислиться в любом порядке, на усмотрение компилятора. А вот вторая функция выполнится только если первая вернёт false - именно это говорит стандарт языка.