Результаты поиска
| |
Archido | Дата: Вторник, 08 Февраля 2011, 05:16 | Сообщение # 741 | Тема: OGL как изменить дальность рендера |
Сэнсэй
Сейчас нет на сайте
| Добавлю, что не стоит всегда увеличивать диапазон [zNear; zFar], т.к. это приводит к понижению разрешения z-Buffer'a, а в дальнейшем к проблемам (Z-fighting - водичка, тени, etc). Можно просто понижать свою внутренюю метрическую систему, как вариант. Например, Crysis, имеет zNear - zFar [0.1f; 5000.0f]. А метрическая система, скажем(точно не знаю): метр - 1.0f. Cледовательно, имеем дальность обзора в 5 километров, что не так то и мало . P.S. Ну а в данном случае, 50f - это да, тут все на лицо
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Вторник, 08 Февраля 2011, 05:16 |
|
| |
Archido | Дата: Вторник, 08 Февраля 2011, 05:00 | Сообщение # 742 | Тема: Большая динамическая карта [2D] |
Сэнсэй
Сейчас нет на сайте
| Me11eR Так оно всегда и делается. Только мне кажется, что в 2D - это лишнее (слишком мало памяти требуется), от типа игры видимо зависит. Если требуется подгрузка ресурсов по-ходу (текстуры, скажем), то если движком такое не поддерживается, то это не тривиальная задача. Правко: Плин), как не странно, но только сейчас обратил внимание, что это 2D . Поэтому пост _почти_ удален (т.к. расписал все про 3D)
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Вторник, 08 Февраля 2011, 05:26 |
|
| |
Archido | Дата: Четверг, 03 Февраля 2011, 05:00 | Сообщение # 743 | Тема: Windows XP |
Сэнсэй
Сейчас нет на сайте
| Как вариант, установить вот это: KB905474 . This is "Windows Genuine Advantage Notifications", аля "Проверка подлинности". Кто не особо "любит" лицензии Windows, но в то же время очень любит Windows Update, наверняка сталкивался с такой штукой: "Возможно, вы приобрели поддельную копию программного обеспечения ..." . Так вот это оно.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Четверг, 03 Февраля 2011, 02:10 | Сообщение # 744 | Тема: 3D Action Maker 2 |
Сэнсэй
Сейчас нет на сайте
| Хех, родной Delphi и GLScene, эх молодость . Я правда с GLScene особо не знаком, только когда-то поверхностно его смотрел... Но думается, что для "конструктора" выбрана удачная связка, учитывая отличные возможности Delphi по работе с интерфейсом (VCL). Рендеры внушают , очень хорошо смотрится. Главное доведи дело до конца И скажу только про Spherical Harmonics в CE3, там SH только составная часть всего алгоритма, при этом очень не тривиальна в понимании и реализации. Т.е. я хочу сказать, что имхо, не стоит сейчас гоняться за кучей разнообразных "next-gen" вещей, а нужно стараться довести до ума сам конструктор, а потом уже никто не будет мешать потихоньку прикручивать к нему энти технологии. P.S. Плюсую за проделанную работу . Удачи.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Среда, 02 Февраля 2011, 10:53 | Сообщение # 745 | Тема: Нубский ворпос. |
Сэнсэй
Сейчас нет на сайте
| Slavec Ну тут все довольно просто, пробуй больше смотреть простых примеров и разбираться, хорошо помогает. Для "вывода баланса" нужно добавить в класс простую фукнцию, а в меню "определить" бесконечный цикл, примерно так: Code class Account { private:
int balance;
...
int getBalance() const { return balance; } }
...
int main() { Account myAccout; int vibor;
while (true) { //бесконечный цикл, наше меню
cout << "Выберите операцию\n"; cout << "(1)Положить деньги на счет\n"; cout << "(2)Снять деньги со счета\n"; cout << "(3)Вывести баланс\n"; cout << "(4)Выйти...\n";
cin >> vibor;
if (vibor == 1) myAccout.debit(); // == if (vibor == 2) myAccout.credit(); if (vibor == 3) cout << "Баланс: " << myAccout.getBalance() << "\n\n"; \\Выводим баланс
if (vibor == 4) break; //прерываем цикл и выходим из меню
system("Pause"); }
return 0; } В ф-ции 'getBalance()' используется модификатор const, что в данном случае означает, что ф-ция не изменяет поля нашего класса (в данном случае 'balance'), а просто читает его содержимое. Это делать не обязательно, но это как минимум хороший тон, которому стоит придерживаться. Еще тут можно заменить кучи операторов 'if' на switch/case, опять таки не обязательно, просто код станет чуть удобнее и читабельнее.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Среда, 02 Февраля 2011, 00:02 | Сообщение # 746 | Тема: Нубский ворпос. |
Сэнсэй
Сейчас нет на сайте
| Quote (Kornival) Ну все, ясно, спасибо. Только в моем случае память нужно было выделять максимум для пары десятков объектов. Так и выделял бы сразу два десятка . Точно также можно выделить пул в два десятка, и если вдруг все таки окажется больше, то не будет никаких проблем, иначе AV. Но я как понял оно тебе тут не надо =) zodiak Чорт, я нуп, пошел читать Страуструпа... Хотя честно, не знал. Но вообще пакостный способ, два десятка разнообразных полей и жизнь хороша (не дай бог в случае рефакторинга кто-то чуток(или "случайно") перепутает пару членов структуры ). Так как-то православнее, имхо: Code struct Test { int fX; char* fY;
Test(int X, char* Y): fX(X), fY(Y) {} };
Test Var(15, "cool"); В случае "косяков" компилятор сразу даст знать. Slavec Переменную "balance" можно внести под класс. "vibor=1" это fail, хотя ошибка у начинающих популярная. В языках Си равенство проверяется оператором "==", а просто "=" это присваивание. Code #include <iostream> #include <string>
using namespace std;
class Account { private:
int balance; //переменная в классе, в Private секции (извне к ней никто не сможет обратиться)
public:
Account() { balance = 0; //инициализируем ее }
void debit() { int debit; cout << "Введите сумму, которую вы хотите положить на счет"; cin >> debit; balance = balance + debit; };
void credit() { int credit; cout << "Введите сумму, которую вы хотите снять со счета"; cin >> credit;
if (credit < balance) { cout << "Запрашиваемая сумма превышает баланс счета"; } balance = balance-credit; } };
int main() { Account myAccout; int vibor;
cout << "Выберите операцию\n"; cout << "(1)Положить деньги на счет\n"; cout << "(2)Снять деньги со счета\n";
cin >> vibor;
if (vibor == 1) myAccout.debit(); // == if (vibor == 2) myAccout.credit();
system("Pause"); return 0; }
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Среда, 02 Февраля 2011, 00:04 |
|
| |
Archido | Дата: Вторник, 01 Февраля 2011, 20:23 | Сообщение # 747 | Тема: Нубский ворпос. |
Сэнсэй
Сейчас нет на сайте
| Kornival, ну Бассейн, вестимо А если серьезно), то я смысл его примерно описал в прошлом посте. Ща подробнее опишу. Вообще, сущность "динамического массива" весьма абстрактна, все без исключения оперируют блоками памяти. Так вот, собственно, "идея": Выделять не фиксированный конкретный размер под примерное количество элементов, а в разы больше (можно специально в N раз больше, чем кол-во элементов, либо кратное страницы памяти 4K, etc). И работать с ними, пока весь "блок" не закончится. Это как бе и есть пул. А далее просто выделяется другой блок в памяти, в два раза больше чем предыдущий. Половину нового блока займет старый (все скопируется), а остальная половина пойдет под свои нужды и так до бесконечности . Вот это все и имется в виду под сущностью "динамический массив", аля чуть навороченный "вектор". Таким образом ОЧЕНЬ сильно повышается быстродействие, нужно правда, удачно подбирать размер пула под конкретный случай (чтобы выжать весь максимум =), но это не обязательно), т.к. редко дергаются ф-ции выделения памяти, которые в свою очередь довольно "тяжелые".
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Вторник, 01 Февраля 2011, 16:13 | Сообщение # 748 | Тема: Нубский ворпос. |
Сэнсэй
Сейчас нет на сайте
| Quote (shnaket) В общем, не стал заводить новую тему, спрошу в этой. Допустим, есть структура. Она объявлена в хэдере. А как заполнить её поля в .cpp-файле, не создавая отдельных функций? Никак. Нужен как минимум конструктор. Quote (Kornival) Тогда допустим я не знаю сколько мне понадобится памяти, как можно постоянно динамически выделять память и как к ней потом обращаться. Нужно сделать что-то вроде vector`a. Ну в общем как выделять память понятно, но как сделать "итератор"? Так, наверное, это все уже давно не актуально, но я все таки кое что скажу =). Вероятно, я слишком бегло прочитал тему и не до конца понял мысль, но меня смущают несколько моментов. Если все таки нужен аля "вектор", то зачем юзать связные списки? Их правильно (т.е. удобно и эффективно) юзать, когда выполняется большинство из данных критериев: - очень частое добавление\удаление элементов, при чем не пропорциональное (скажем добавляется в два раза больше, чем удаляется. Иначе гораздо эффективнее вырулит "обычный дин. массив". Либо частые добавления\удаления в середине). - требуется "обходить" все элементы последовательно вообще или частично, пока не будет найден какой-то определенный элемент. Никаких "обращений по индексам", иначе большущий fail. В случае двусвязного списка, на хранение элемента требуется +8 байт (х86), жирновато. На односвязный +4, пережить можно. Но если потребуется обратиться (как угодно) к предпоследнему элементу скажем, придеться "пройти" весь список :D. Также существует очень большая вероятность не попасть в кэш, т.к. память на элемент будет выделяться хаотично, никакой последовательности. К тому же дергать new\delete на каждый "push\pop" не очень красивая затея, потребуется как минимум некоторый Pool. Иначе fail. Вообщем я хотел сказать, что для "вектора" списки сильно не подходят, медленно. QSort из > 10 тыс. элементов на таком векторе "уложит" любой современный процессор Вектор, собссна, это обычный динамический массив со встроенным Pool'ом :). Т.е. ты в начале выделяешь определенный кусок памяти, скажем 4К. Используя malloc, например. Далее занимаешься удалением\добавлением, и проверяешь не превысили ли элементы твой Пул, если да, то вызываешь realloc, и выделяешь в два раза больше памяти, 8К. При этом все старые элементы скопируются в новую область памяти (если потребуется). И можно дальше продолжать добавлять элементы :). Память будет выделяться очень редко. Как-то так, если в кратце Добавлено (01.02.2011, 16:13) ---------------------------------------------
Quote (Matou) а для этого лучше использовать классы, а не структуры, ну и в последних, но не в последнюю очередь, не зачем изобретать велосипед, все это уже реализовано в STL Кстати, чем то класс от структуры отличается? Аргументы про "велосипед" никогда не понимал. Т.е. использовать "черный ящик" всегда это хорошо? Работает, да и ладно. А если потребуется дописать чуток? Модифицированный stl vector весьма частая практика. Да и вообще, человек учится, а не занимается разработкой коммерческого АА проекта в сильно ужатые сроки. Имхо.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Вторник, 01 Февраля 2011, 16:05 |
|
| |
Archido | Дата: Среда, 26 Января 2011, 17:55 | Сообщение # 749 | Тема: Восстановление реферата. |
Сэнсэй
Сейчас нет на сайте
| Naruto-63, Если после установки ОС особо "сверху" ничего не записывал, то шансы есть. Но это большая и долгая история в плане необходимого времени. Если все таки "игра стоит свеч", то заюзай GetDataBack, хорошая тулза, в основном все восстанавливает если оно на диске сохранилось (ФС целая, перезаписи небыло, etc).
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Среда, 26 Января 2011, 17:47 | Сообщение # 750 | Тема: Windows заблокирован - троян-баннер |
Сэнсэй
Сейчас нет на сайте
| Quote (IroNN) У мну пуска нет. Пропал и ярлыки все. Только через диспетчер задач Посмотри вот этот раздел: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", там в параметре "Shell" должен быть "explorer.exe". А вообще LiveCD обычно спасает отцов Российской демократии :D. Ну или ставьте себе отладчик уровня ядра, забавно будет. Я сам тоже всегда удивлялся, где народ цепляет подобное зверье, оно ведь при том еще разное бывает (часто приходилось иметь дело с полным "Lock'ом" системы, даже БР не спасает, тут только LCD (или отладчик ). Как то на моем рабочем ноуте умудрились "поработать" и пригласить гостя, который был впоследствии уничтожен отладчиком за пару минут
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Суббота, 01 Января 2011, 17:32 | Сообщение # 751 | Тема: Ждёте ли вы Crysis 2 ? |
Сэнсэй
Сейчас нет на сайте
| Quote (Psycho) Жду, но только чтобы посмотреть на что еще способен Cryengine. +1. Когда выйдет, займусь Reverse Engineering'ом их рендера, как было с первым Crysis'ом
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Суббота, 01 Января 2011, 15:17 | Сообщение # 752 | Тема: OpenGL SDK |
Сэнсэй
Сейчас нет на сайте
| Kornival, ну вообщем-то OpenGL и SDL особо ничего не связывает , SDL предоставляет некоторые платформо - независимые вещи для упрощения работы, являясь таким образом высокоуровневой "оберткой" над системным API. Мой совет заключался в непосредственно прямой работе с системным API (в данном случае, WinAPI), создание окна, обработка сообщений (окна, ввод, etc), работа с системным таймером, etc. Это для начала, сюда еще можно много чего отнести. Такой опыт работы с WinApi лишним не будет никогда, пригодится (не только в геймдеве). Позже, в будущем с опытом придет такой навык у программистов, как "проектирование". С относильно более простой легкостью ты будешь "видеть" платформо - зависимый код (например(!), раз мы про системное API) и грамотно проектировать приложение с ним, обеспечивая таким образом прекрасную переносимость и соответственно, архитектуру. В программировании (особенно на С++) главное, писать, писать, и еще раз очень много писать . В силу своих возможностей, конечно. Изобретать различные, так называемые, "велосипеды". Т.е. стараться писать все самому и как можно больше , теория здесь играет не первостепенную роль. Это все опыт, много опыта. А потом уже можно выбирать , либо использовать уже что-то готовое, либо использовать свои наработки. Опять таки, все в силу своих возможностей. Да и просто приятно осознавать, что движок(например) написан с нуля и полностью своими руками P.S. Это мой опыт и мое видение вещей, следовать этому или спорить, совсем не обязательно.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Суббота, 01 Января 2011, 13:27 | Сообщение # 753 | Тема: OpenGL SDK |
Сэнсэй
Сейчас нет на сайте
| Quote (ezhickovich) Зачем привыкать к винапи? Никогда не видел, чтобы кто-то привыкал к WinApi , а вот к SDL запросто . И совсем необязательно привязываться к слову "WinApi", есть XWindowSystem например, суть была не в этом. Она была в том, что в процессе разработки на "чистом" API, скажем, приходит понимание принципа работы вышестоящей библиотеки (в данном примере - это SDL) и увеличение скилла программиста, что для последнего это вообще как святое. Это относится не только к (WinApi и SDL), а к идеологии программирования в целом. Потому, что есть немало таких людей, у которых если забрать весь "высокий уровень", они просто впадут в ступор и ничего не смогут сделать. Аналогично, если по каким-либо причинам потребуется расширение функционала и проблему не решить заменой либы, то программист без соответствующих навыков ничего не сможет сделать.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Суббота, 01 Января 2011, 12:42 | Сообщение # 754 | Тема: Как восстановить пароль от email |
Сэнсэй
Сейчас нет на сайте
| DDTAA, обычно еще указывается дополнительный e-mail, чтобы в случае утери пароля\ответа на вопрос, восстановить ящик.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Суббота, 01 Января 2011, 12:32 | Сообщение # 755 | Тема: OpenGL SDK |
Сэнсэй
Сейчас нет на сайте
| Со своей колокольни я бы посоветовал сейчас выкинуть вообще SDL и поучиться кухне по работе с WinApi, много полезного узнается. В винде все делается довольно таки просто. SDL будет очень полезен при разработке кросс-платформенного приложения, избавит от некоторой рутины (дубляж platform-specific вещей, вроде окон, ввода, etc). Для загрузки текстур можно заюзать DevIL или что-то подобное. P.S. К хорошему обычно быстро привыкаешь
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Суббота, 01 Января 2011, 12:21 | Сообщение # 756 | Тема: OpenGL + C# |
Сэнсэй
Сейчас нет на сайте
| Mickey, литература по "OpenGL на C#" ничем не отличается от литературы по "OpenGL на С++". Если это вызывает проблемы, то советую подучить язык(и). Т.к. основная масса информации по OpenGL на С++. Ну, а вообще: Чуток на C# Хорошие уроки, но С++
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Суббота, 01 Января 2011, 12:22 |
|
| |
Archido | Дата: Пятница, 31 Декабря 2010, 18:19 | Сообщение # 757 | Тема: как там в Новом году? |
Сэнсэй
Сейчас нет на сайте
| У нас уже больше часа как 2011 , чуть ранее одновременно залпом много народу ПВО запускали (и я в том числе :D), было красиво, круто и громко , но пофоткать не успели... А вообще все празднование еще впереди ), как известно, у русского народа праздники обычно затяжные . С наступившем 2011 всех! А у кого все еще впереди, с наступающим
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Пятница, 31 Декабря 2010, 18:22 |
|
| |
Archido | Дата: Пятница, 31 Декабря 2010, 14:21 | Сообщение # 758 | Тема: Terrain + пещеры |
Сэнсэй
Сейчас нет на сайте
| Quote (Tahoma) ну оптимизацию я сразу заложил. чем дальше "горка", тем меньше полигонов выводится. Конечно не до полного искажения, но пока без деревьев и прочего видно, что при приближении горка изменяется и выравнивается. надеюсь с другими элементами мира этого видно не будет Мм, а каким образом сейчас реализован ландшафт и система LODов? Вкратце. Чтобы не было видно скачков при переключении лодов, можно морфить ландшафт в целом, под микроскопом будет видно плавное "перетекание" от одного уровня к другому, степень "заметность" будет зависить только от топологии ландшафта. Но нужен вершинный шейдер.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Пятница, 31 Декабря 2010, 13:59 | Сообщение # 759 | Тема: Делаем рабочую среду |
Сэнсэй
Сейчас нет на сайте
| Quote (pretty_mouse) потому что я решила для начала выучить Асемблер и C++ вывести на отличный уровень Очень похвально , но для начала советую ограничиться сишкой, асм, если потребуется, сам позже приложится :). P.S. Сейчас другие времена, сейчас сложнее написать на асме лучше, чем за нас это сделает оптимизирующий компилятор.
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
|
|
| |
Archido | Дата: Пятница, 31 Декабря 2010, 13:38 | Сообщение # 760 | Тема: Поздравляем с новым годом!!! |
Сэнсэй
Сейчас нет на сайте
| Присоединяюсь, всех с наступающим НГ! P.S. У нас чуть менее 3 часов и 30-ти минут до торжества
C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
Сообщение отредактировал Archido - Пятница, 31 Декабря 2010, 13:48 |
|
| |
|