GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (170 стр.)

Сообщения на форуме пользователя Andrey (170 стр.)

Очень Красивый Дельфи!10 июня 200616:36#5380
MeF
>При условии, что писать будет профессиональный программист, не думаю, что FPS будет различаться более, чем на 10-15%. Тем более, что зачастую игра упирается >не в проц, а в видяху.
а я думаю что FPS будет различаться больше. по попределнию компилятор Delphi более неоптимизированный код делает.
а AI просчитывать а по BSP/Octree деревьям кто будет видюха бегать? а физику кто проститывать будет(еще не все физ. бибилиотеки имеют аппаратную поддержку на видюхах) Кстати а код SSE Delphi поддерживает? дак вот если нет то это еще минимум 5% можно прибавить.
а 15% на это время еще задачи можно подкинуть.
Очень Красивый Дельфи!10 июня 200616:05#5377
глупый нович0к
>а вы товарищь, неправы! народ нереписывал кваку на делфях. а еще где-то писали, ИЛ2-Штурмовик на яве написан по большей части (насчет явы - непомню, но точно >не на сях)
Еще который раз говорю Давай Far Cry/Half Life 2/Doom III/Call of Duty/Quake IV сделать и как это работатть будет?
кваку то переписали но!! это был проект 10 летней давности!!! 170 FPS выводил, а на C 290!! чувствуешь разницу???? данный результаты я запомнил делал это человек уважающий Delphi и имеющий опыт разрабтки на Delphi и C++. Тест проводился в равных уловиях. Давайте смотреть правде в глаза.
Переписать молжно и Quake III/IV  но будет ли приемлимый FPS ?
>а в VS ты себе моск сломаешь с идиотским MFC.
Никак не сомаю MFC для меня не страшно как многим кажется.
XProger
>Я понял что С++ позволяет сделать абсолютно всё, и чаще всего через одно место :)
про Delphi сказать можно тоже самое как ты увидел код убог в плане функциональности на обоих языках. Но пременив STL код на C++ будет равть твой код с лучшими Delphi средствами его реализации.
Очень Красивый Дельфи!10 июня 200615:38#5371
XProger
Доволен результатом сравнения кода?
Ну что ты понял всетаки что C++ круче? со временем как будешь устраиваться на игровую фирму можешь забить на убожество.Ну никак не сделаешь большого игрового проекта на нем.
Очень Красивый Дельфи!10 июня 200615:01#5360
XProger
>1) В Delphi я написал меньше кода с той же логикой всех частей что и у тебя - почему?
потому что  Delphi  более высокоуровневфй язык чем C++ поэтому и получилось больше кода, т.к. если не использовать шаблоны в данной задаче то надо писать больше ручками, если я бы использовал STL то было бы в несколько раз меньше. Но ты сказал изобрести убогий велосипед что я и сделал.
>2)Весит это добро 64 кб в релизе, в Delphi (в которой нет релиза/дебага) весило 22 кб - почему?
ну вот можно уменьшить до 49 кб убрав поток вывода заменив на fprintf
...
//std::cout <<  UINList[UIN[0]] + UINList[UIN[1]] + UINList[UIN[2]];
fprintf(stderr, "%s", UINList[UIN[0]] + UINList[UIN[1]] + UINList[UIN[2]].c_str());
...
//std::cout << UINList[UIN[2]];
fprintf(stderr, "%s", UINList[UIN[2]].c_str());
...
Еще разница в весе в том что ты берешь функции ОС возможно из какой нибудь *.bpl ты убери галочку use RTL library если такая есть.
Очень Красивый Дельфи!10 июня 200614:01#5353
XProger
Итак вот тебе код на C++ то-же убогий велосипед как у тебя ты думаешь C++ программисты не могут писать велосипеды???
Сразу скажу не все сделано как у тебя т.к. в обоих языках Delphi и C++ нет похожих средств все рализовано по разному. Код не оптимизирован как ты сказал.
Работает правильно. Программа не падает.
Прошу поправить если что ;)
Итак код:
#include <string>
#include <cstdlib>
#include <iostream>
#include <ctime>

class TUINList {
private:
	struct TItem {
		int UIN;
		std::string Value;
		TItem();
		void Gen();
	};
	TItem **FItems;// это
	unsigned int numItems;
	std::string GetItem(int UIN) const;
	void SetItem(int UIN,  const std::string& NewValue);
public:
	TUINList();
	~TUINList();
	std::string operator[](unsigned int index) const;// это
	std::string& operator[](unsigned int index);// это
	int Add(const std::string& NewValue);
	void Del(int UIN);
};

TUINList::TUINList() : FItems(NULL), numItems(0)
{
	srand(static_cast<unsigned int>(time(NULL)));
}

TUINList::TItem::TItem()
{
	Gen();
}

void TUINList::TItem::Gen()
{
	UIN = rand();// не исключаю случаев повтора, это не суть...
}

int TUINList::Add(const std::string& NewValue)
{
	FItems = reinterpret_cast<TItem **>(realloc(FItems, sizeof(TItem *) * (numItems + 1))); // это
	FItems[numItems] = new TItem;
	FItems[numItems]->Value = NewValue;
	numItems++;
	return FItems[numItems - 1]->UIN;
}

TUINList::~TUINList()
{
	for(unsigned int i = 0; i < numItems; i++)
		delete FItems[i];
	free(FItems);
}


void TUINList::Del(int UIN)
{
	for(unsigned int i = 0; i < numItems; i++) {
		if (FItems[i]->UIN == UIN && numItems > 1) {
			*FItems[i] = *FItems[numItems - 1]; // это
			delete FItems[numItems - 1]; // это
			FItems[numItems - 1] = NULL; // это
			numItems--;
			break;
		}
	}
}

std::string TUINList::operator[](unsigned int index) const
{
	return GetItem(index);
}

std::string& TUINList::operator[](unsigned int index)
{
	for(unsigned int i = 0; i < numItems; i++) {
		if (FItems[i]->UIN == index) {
			return FItems[i]->Value;
		}
	}
	static std::string str;
	return str;
}

std::string TUINList::GetItem(int UIN) const
{
	for(unsigned int i = 0; i < numItems; i++){
		if (FItems[i]->UIN == UIN)
			return FItems[i]->Value;
	}
	return "";
}

void TUINList::SetItem(int UIN,  const std::string& NewValue)
{
	for(unsigned int i = 0; i < numItems; i++){
		if (FItems[i]->UIN == UIN) {
			FItems[i]->Value = NewValue;
			return;
		}
	}
}

int main(int argc, _TCHAR* argv[])
{
	TUINList UINList;
	int UIN[3] = {0};// это
	UIN[0] = UINList.Add("A VAM ");       // это
	UIN[1] = UINList.Add("SLABO");        // это
	UIN[2] = UINList.Add(" POVTORIT''?"); // это
	std::cout <<  UINList[UIN[0]] + UINList[UIN[1]] + UINList[UIN[2]];// это
	UINList.Del(UIN[0]); // это
	UINList.Del(UIN[2]); // это
	UINList[UIN[2]] = "NU-NU ;)"; // это
	std::cout << UINList[UIN[2]]; // это
	getchar();
	return 0;
}
Как организовать рендеринг большой сцены?10 июня 200612:49#1
Arks
Однозначного вопроса нет.
>Сцена состоит из двумерного ландшафта и множества трёхмерных объектов на ней
Объекты динамические? (т.е. меняют свое положение?)Для статики тебе нужно побить ландшафт на QuadTree/Octree дерево. Для динамических объектов все усложняется.
>Только вот им нужно, чтобы элементы всех массивов соответствовали друг другу, т.е. для каждой вершины свой вектор нормали, свои координаты текстуры, так?
чето не понял вопроса. Но в принципе так и должно быть
>У меня есть массив клеток ландшафта, каждой соответствует текстура (индекс из массива текстур) и характеристики.
не вдаваясь в структуру твоей клетки ландшафта тут для начала нужно сделать сортировку по текстурам(в будущем появятся материалы с шедерами, поэтому сортировать нужно по материалам). Это нужно для повышения быстродействия. Т.е. ты 1 раз выбираешь текстуру и выводишь часть полигонов принадлежещих этой текстуре, потом следующая текстура и т.д. быстродействие повысится. Тут можно пойти 2 путями:
1) для каждой группы полигонов создать вершинный буфер и потом его выставлять с выбором тестуры
2) создать единый буфер для всего ландшатфа, для каждой группы полигонов выводить начиная со стартовой вершины которая будет смещаться в кажой группе.
1 способ требует частой смены вершинный буфероо что не очень хорошо. Во втором спосоюе может быть ограничения как на создание вершинного буфера так и на вывод
ограниченного число полигонов за 1 вызов вот точно не знаю как тут в OpenGL обутося дела. В Direct3D точно есть такие моменты.
Следует учесть что эти 2 способа слудует применить к узлам Quad/Octree деорева. Тогда рекурсивно проходя по дереву  в зависимости от положения камеры можно отбросить заведено не видимые узлы и рендерить только те листья(узлы к оторых данный геометрии)  которые видны. Это здорово должно прибавить быстродействие если всне правильнос делать.
Еще можно попутно создавать индексный буфер тогда умешьтся число передаваемых вершин видеокарте его тоже сдедует хранить в узлах в первом случае или создать единый индексный буфер и хранить стартовй узел для каждого узла.
В общем вроде все объяснил.
Из Дельфи в Си? И из Си в Дельфи?10 июня 20061:08#279
Joes
Отлично сказано ;)
Holywar: AngelScript vs Lua9 июня 200622:02#42
DaRT
>Python 2.4 по скорости такой же тормознутый как Python 2.3.5. Тут особо ни на что не расчитывай...
Ты думаешь он мне нужен?? я вот начал Lua использовать и мне ничего не надо для скриптов кроме его :))) Я просто спросил чтобы быть полностьтю уверенным что Lua самый быстрый скриптовый язык.
Holywar: AngelScript vs Lua9 июня 200620:57#40
xpinguin
Круто Lua всех рвет, но вот Python 2.4 уже есть как думаешь он чуть бстрей будет не пробовал?
Из Дельфи в Си? И из Си в Дельфи?9 июня 200615:39#263
XProger
>что не в состоянии котролировать свой код - залить в бетон такого программиста.
я что -то не понимаю про что тут иемется ввиду? Есть средства для облегчения работы он их привел в пример разве у убогого  Delphi такого нет, есть но они уступают по возможностям.
>Это "убожество" имеет один из сложнейших по устройтву компиляторов. Кстати, одной из целей С++ была убогость (простота устройства) компилятора :)
в Delphi это самый примитивный компилятор однопроходный. Оптимизации нет, контроль типов и Малая скоростьт.д.в общем смерительная рубашка.
серьезный софт пишется на C/C++. Слабо признать факт поритирования Quake II на убогое Delphi?
170 FPS - Убогое Delphi 290 - C
Есть разница? далее увеличиваем сложно до Quake III я сомневаюсь что там будет больше 50 - уже нет реалистичности так что в топку Delphi
Из Дельфи в Си? И из Си в Дельфи?9 июня 200615:21#260
XProger
>надуманными фактами работы с unit'ами, самоудаляющимися классами и другими элементами
а почему надуманные факты? это реально применяется достаточно широко.
примеры с std::auto_ptr/boost::shared_ptr это как раз показатель мощь C++ шаблонов, они скрывают недостаток C++, позволяю сосредоточиться на задаче, Чего в Убогом Delphi нет и надо как тут говорили "внимательно писать" ну почему ты это не признвешь? Это ЖЕ ФАКТ ;)
Joes
забей это бесполезно Delphi'ты будуд до пенсии прогать на убожестве :)))
Помогите с переходом D3D -> OGL9 июня 200614:51#21
Костян
Поробуй так
glEnableGL_SCISSOR_TEST);
glScissor(x,y, Width, Height);
....
glDisable(GL_SCISSOR_TEST);
C++ - вопрос Новичка9 июня 200614:14#10
keltar
>а что есть хоть один компилятор, который полностью соответствует стандарту цэпэпэ? очень сомневаюсь
я имел ввиду что BDS должен быть лучше чем C++ Builder 6.0 оказыввается Borland продолжает гнать отстой, а прошло уже 4 года.
Visual С++ vs. Delphi8 июня 200622:49#2544
Sniper
>Так что ты в который раз идёшь учить матчасть/пить яд/убиваться аб стену (нужное подчеркнуть) так как показал свою некомпетентность и в этом вопросе
может ты пойдешь попить?
я знаю что Pascal старше C на 1 год!!!
но мы говорим про C++ и Object Pascal!!! ты что попутался??????? :)))))))))))))
дак вот C++ страше Object Pascal!! т.к. он начал разрабатываться где-то с 1979 года а убогий Object Pascal когда появился???
Первая версия Object Pascal случайно не 1995 году вышла когда появилось первый выродок убожества Delphi 1.0 разве нет???
и потом от версии к версии убожестов стало передирать у языка C++ его возможности : параметры функций по умолчанию, перегрузка, ключевое слово class
у Pascal то object так что давай учить матчасть/пить яд/убиваться аб стену (нужное подчеркнуть) так как показал свою некомпетентность и в этом вопросе.
INT 21H Установка даты8 июня 200622:36#5
L1f
>PS Про VMWare и VirtualPC все понял. Просто возможности установить эти немаленькие системы на "клиентскую" машину нет (ибо я сдаю лабы по асемблеру на хп :)
значит препод ламак!!
кто-же использует DOS прерывания в Windows?????

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр