Понедельник, 25 Ноября 2024, 05:53

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
ArchidoДата: Вторник, 08 Февраля 2011, 05:16 | Сообщение # 741 | Тема: OGL как изменить дальность рендера
Сэнсэй
Сейчас нет на сайте
Добавлю, что не стоит всегда увеличивать диапазон [zNear; zFar], т.к. это приводит к понижению разрешения z-Buffer'a, а в дальнейшем к проблемам smile (Z-fighting - водичка, тени, etc).
Можно просто понижать свою внутренюю метрическую систему, как вариант.

Например, Crysis, имеет zNear - zFar [0.1f; 5000.0f]. А метрическая система, скажем(точно не знаю): метр - 1.0f.
Cледовательно, имеем дальность обзора в 5 километров, что не так то и мало smile .

P.S. Ну а в данном случае, 50f - это да, тут все на лицо smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Вторник, 08 Февраля 2011, 05:16
ArchidoДата: Вторник, 08 Февраля 2011, 05:00 | Сообщение # 742 | Тема: Большая динамическая карта [2D]
Сэнсэй
Сейчас нет на сайте
Me11eR
Так оно всегда и делается. Только мне кажется, что в 2D - это лишнее (слишком мало памяти требуется), от типа игры видимо зависит.
Если требуется подгрузка ресурсов по-ходу (текстуры, скажем), то если движком такое не поддерживается, то это не тривиальная задача.

Правко: Плин), как не странно, но только сейчас обратил внимание, что это 2D biggrin .
Поэтому пост _почти_ удален smile (т.к. расписал все про 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, наверняка сталкивался с такой штукой: "Возможно, вы приобрели поддельную копию программного обеспечения ..." biggrin .
Так вот это оно.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Четверг, 03 Февраля 2011, 02:10 | Сообщение # 744 | Тема: 3D Action Maker 2
Сэнсэй
Сейчас нет на сайте
Хех, родной Delphi и GLScene, эх молодость biggrin .
Я правда с GLScene особо не знаком, только когда-то поверхностно его смотрел... Но думается, что для "конструктора" выбрана удачная связка, учитывая отличные возможности Delphi по работе с интерфейсом (VCL).

Рендеры внушают smile , очень хорошо смотрится. Главное доведи дело до конца wink

И скажу только про Spherical Harmonics в CE3, там SH только составная часть всего алгоритма, при этом очень не тривиальна в понимании и реализации.
Т.е. я хочу сказать, что имхо, не стоит сейчас гоняться за кучей разнообразных "next-gen" вещей, а нужно стараться довести до ума сам конструктор, а потом уже никто не будет мешать потихоньку прикручивать к нему энти технологии.

P.S. Плюсую за проделанную работу smile . Удачи.


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)
Ну все, ясно, спасибо. Только в моем случае память нужно было выделять максимум для пары десятков объектов.

Так и выделял бы сразу два десятка smile . Точно также можно выделить пул в два десятка, и если вдруг все таки окажется больше, то не будет никаких проблем, иначе AV. Но я как понял оно тебе тут не надо =)

zodiak
Чорт, я нуп, пошел читать Страуструпа... biggrin
Хотя честно, не знал. Но вообще пакостный способ, два десятка разнообразных полей и жизнь хороша (не дай бог в случае рефакторинга кто-то чуток(или "случайно") перепутает пару членов структуры smile ).

Так как-то православнее, имхо:

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, ну Бассейн, вестимо biggrin

А если серьезно), то я смысл его примерно описал в прошлом посте. Ща подробнее опишу.
Вообще, сущность "динамического массива" весьма абстрактна, все без исключения оперируют блоками памяти.
Так вот, собственно, "идея": Выделять не фиксированный конкретный размер под примерное количество элементов, а в разы больше (можно специально в N раз больше, чем кол-во элементов, либо кратное страницы памяти 4K, etc). И работать с ними, пока весь "блок" не закончится. Это как бе и есть пул.

А далее просто выделяется другой блок в памяти, в два раза больше чем предыдущий. Половину нового блока займет старый (все скопируется), а остальная половина пойдет под свои нужды smile и так до бесконечности biggrin . Вот это все и имется в виду под сущностью "динамический массив", аля чуть навороченный "вектор".

Таким образом ОЧЕНЬ сильно повышается быстродействие, нужно правда, удачно подбирать размер пула под конкретный случай (чтобы выжать весь максимум =), но это не обязательно), т.к. редко дергаются ф-ции выделения памяти, которые в свою очередь довольно "тяжелые".


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 тыс. элементов на таком векторе "уложит" любой современный процессор biggrin

Вектор, собссна, это обычный динамический массив со встроенным Pool'ом :).
Т.е. ты в начале выделяешь определенный кусок памяти, скажем 4К. Используя malloc, например.
Далее занимаешься удалением\добавлением, и проверяешь не превысили ли элементы твой Пул, если да, то вызываешь realloc, и выделяешь в два раза больше памяти, 8К.
При этом все старые элементы скопируются в новую область памяти (если потребуется). И можно дальше продолжать добавлять элементы :). Память будет выделяться очень редко.
Как-то так, если в кратце cool

Добавлено (01.02.2011, 16:13)
---------------------------------------------

Quote (Matou)
а для этого лучше использовать классы, а не структуры, ну и в последних, но не в последнюю очередь, не зачем изобретать велосипед, все это уже реализовано в STL

Кстати, чем то класс от структуры отличается? biggrin
Аргументы про "велосипед" никогда не понимал. Т.е. использовать "черный ящик" всегда это хорошо? Работает, да и ладно.
А если потребуется дописать чуток? Модифицированный 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 (или отладчик smile ). Как то на моем рабочем ноуте умудрились "поработать" и пригласить гостя, который был впоследствии уничтожен отладчиком за пару минут biggrin


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Суббота, 01 Января 2011, 17:32 | Сообщение # 751 | Тема: Ждёте ли вы Crysis 2 ?
Сэнсэй
Сейчас нет на сайте
Quote (Psycho)
Жду, но только чтобы посмотреть на что еще способен Cryengine.

+1. Когда выйдет, займусь Reverse Engineering'ом их рендера, как было с первым Crysis'ом biggrin


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Суббота, 01 Января 2011, 15:17 | Сообщение # 752 | Тема: OpenGL SDK
Сэнсэй
Сейчас нет на сайте
Kornival, ну вообщем-то OpenGL и SDL особо ничего не связывает smile , SDL предоставляет некоторые платформо - независимые вещи для упрощения работы, являясь таким образом высокоуровневой "оберткой" над системным API.

Мой совет заключался в непосредственно прямой работе с системным API (в данном случае, WinAPI), создание окна, обработка сообщений (окна, ввод, etc), работа с системным таймером, etc. Это для начала, сюда еще можно много чего отнести.

Такой опыт работы с WinApi лишним не будет никогда, пригодится (не только в геймдеве). Позже, в будущем с опытом придет такой навык у программистов, как "проектирование". С относильно более простой легкостью ты будешь "видеть" платформо - зависимый код (например(!), раз мы про системное API) и грамотно проектировать приложение с ним, обеспечивая таким образом прекрасную переносимость и соответственно, архитектуру.

В программировании (особенно на С++) главное, писать, писать, и еще раз очень много писать smile . В силу своих возможностей, конечно. Изобретать различные, так называемые, "велосипеды". Т.е. стараться писать все самому и как можно больше smile , теория здесь играет не первостепенную роль. Это все опыт, много опыта.
А потом уже можно выбирать smile , либо использовать уже что-то готовое, либо использовать свои наработки. Опять таки, все в силу своих возможностей.

Да и просто приятно осознавать, что движок(например) написан с нуля и полностью своими руками smile

P.S. Это мой опыт и мое видение вещей, следовать этому или спорить, совсем не обязательно.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Суббота, 01 Января 2011, 13:27 | Сообщение # 753 | Тема: OpenGL SDK
Сэнсэй
Сейчас нет на сайте
Quote (ezhickovich)
Зачем привыкать к винапи?

Никогда не видел, чтобы кто-то привыкал к WinApi biggrin , а вот к SDL запросто wink .

И совсем необязательно привязываться к слову "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. К хорошему обычно быстро привыкаешь biggrin


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 cool , чуть ранее одновременно залпом много народу ПВО запускали (и я в том числе :D), было красиво, круто и громко smile , но пофоткать не успели... А вообще все празднование еще впереди ), как известно, у русского народа праздники обычно затяжные biggrin .

С наступившем 2011 всех! А у кого все еще впереди, с наступающим smile


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++ вывести на отличный уровень

Очень похвально smile , но для начала советую ограничиться сишкой, асм, если потребуется, сам позже приложится :).

P.S. Сейчас другие времена, сейчас сложнее написать на асме лучше, чем за нас это сделает оптимизирующий компилятор.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
ArchidoДата: Пятница, 31 Декабря 2010, 13:38 | Сообщение # 760 | Тема: Поздравляем с новым годом!!!
Сэнсэй
Сейчас нет на сайте
Присоединяюсь, всех с наступающим НГ! biggrin

P.S. У нас чуть менее 3 часов и 30-ти минут до торжества smile


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Пятница, 31 Декабря 2010, 13:48
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг