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

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

Чтение данных из файла23 фев. 200619:41#1
ENGine
что за тип DataStreamPtr ?
а в debug проверял что читается
Новые версии ODE и Tokamak23 фев. 200615:13#12
novice
ну и как Tokamak?
Причины нелюбви к DirectX среди участников GameDev.ru22 фев. 200621:32#132
ну вот опять началось... :)
Вот мои мысли начал с OpenGL  DirectInput сразу изучил.
теперь на работе использую Direct3D, на OpenGL программирую для души и для общего развития, сейчас в движке вообще реализовал мультирендер работает неплохо, правда пока нет наворото с шедерами.
Оба API Direct3D и OpenGL мне нравятся предпочтения особого не могу дать не одному...
Но DirectShow точно тормоз и DirectSound не нравиться... OpenAL намного проще
а вообще  счиатаю нужно знать и DirectX и OpenGL
Darth
>парсеров для различных файлов полно в инете, пять минут на то, чтобы понять, пять, чтобы обернуть и радуйся
>да и ваш DirectSound сосёт у OpenAL (всмысле по структуре, легкости и платформенности)
верно говоришь
=A=L=X=
>Бред.
>Во первых DX от версии к версии и так меняется. Так ведь в лучшую же сторону.
>Во вторых Билли никогда не будет манипулировать рынком во вред себе. Следовательно никаких неприятностей у >программистов с D3D, могущих способствовать уходу их с него на OGL не будет.
>В третьих никаким монополизмом тут не пахнет и не будет пахнуть долгие годы. OGL остаётся в Windows и он будет там >вероятно вечно. 100%-но функциональный, со всеми екстеншнами и т.п., что бы не вопили паникеры от OGL обчитавшиеся >статей. Ибо 100%-ая обратная совместимость - это главный конек MS за счет которого она и выигрывает гонку операционок.
>Представьте себе на минуту что 50% (т.е. OGL-ных) современных и самых известных и раскрученных игр вдруг перестанет >работать на Win Vista или начнут работать с дикими тормозами.
>Знаете чем это будет пахнуть для MS? Резким падением темпов продаж Vist-ы. Резким и стремительным, как понос. Люди >просто не будут обновлять себе операционку где игрушки работают нормально на другую, где половина игр не работает >или тормозит. Не секрет что геймерство - один из главных стимулов для приобретения компов и операционок в частном >секторе. MS НИКОГДА НЕ ПОЙДЕТ НА ТАКОЕ РАЗОРЕНИЕ.
>Так что успокойтесь. Полнофункциональному OpenGL-ю быть. А D3D и вправду неплох.
Абсолютно согласен!!!
OpenGL и DirectX должны существовать оба и имеют на это право  увсех плюсы и минусы.
Direct3D: Ошибка D3DERR_DRIVERINTERNALERROR и нет изображения на пустой сцене на картах nVidia22 фев. 200621:00#1
вот так рендерю сцену пустую сцену, обработку ошибок написал специально для Release версии
//отображение сцены
void Direct3DRender::RenderScene(float dt)
{
	const char* err = "Ошибка Direct3D: ";
	HRESULT hr = 0;
	//очистка сцены
	hr = pDevice -> Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );
	if (hr != S_OK)
		OutMessage(Console::ERROR_MESSAGE, "%s%s%s", err, DXGetErrorString9(hr), "\n" );
		//начало отрисовки сцены
		hr = pDevice -> BeginScene();
....	тут все закоментировано...
//проверка ошибок
	if (hr != S_OK)
		OutMessage(Console::ERROR_MESSAGE, "%s%s%s", err, DXGetErrorString9(hr), "\n" );
		//конец отрисовки сцены
		hr = pDevice -> EndScene();
		if (hr != S_OK)
			OutMessage(Console::ERROR_MESSAGE, "%s%s%s", err, DXGetErrorString9(hr), "\n" );
		hr = pDevice -> Present( NULL, NULL, NULL, NULL);
		if (hr != S_OK)
			OutMessage(Console::ERROR_MESSAGE, "%s%s%s", err, DXGetErrorString9(hr), "\n" );
}
и вот все hr == S_OK кроме самого последнего:
hr = pDevice -> Present( NULL, NULL, NULL, NULL);
hr == D3DERR_DRIVERINTERNALERROR
эта ошибка как при Release так и при Debug.
проект собран на Visual C++ .Net 2003, DirectX 9.0 SDK за февраль 2006.
стоит DirectX SDK 9.0c. Тип последней видеокарты на которой я это пробовал GeForce FX 5500
что это может быть? что я делаю не так?
Спасибо всем заранее.
С Уважением Андрей.

Правка: 22 фев. 2006 21:02

Direct3D: Ошибка D3DERR_DRIVERINTERNALERROR и нет изображения на пустой сцене на картах nVidia22 фев. 200621:00#0
Привет всем!!!
не могу приложить ума что такое происходит.
Драйвера свежие все игры идут, на одной из карт при инициализации OpenGL в логе пишеться OpenGL 2.0...!!!
итак как обычно создаю окно создаю сцену при загрузке уровня,  вывожу заставку показывающую процент загрузке,
заставка видна!
я думал что у меня что-то при рендере сцены, тгда я все закоментировал и оставил BeginScene, EndScene, Clear и Present.
Выдается ошибка D3DERR_DRIVERINTERNALERROR именно на картах от nVidia, на картах Radeon все отлично работает!!
разумеется пример код:
вот так рендериться заставка:
//отображение процесса загрузки
void Direct3DRender::DrawLoading(const char* str...) const
{
	HRESULT hr = pDevice -> Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 25, 0), 1.0f, 0 );
	hr = pDevice -> BeginScene();
	//Буфер для текста
	char strText[256] = {'\0'};
	va_list		argumentPtr;
    va_start(argumentPtr, str);
	vsprintf(strText, str, argumentPtr);
	va_end(argumentPtr);
	if (_text)
//вывод посредине экрана эта функция ренедрит текст через интерфейс ID3DXFont
	DrawText(_text, 0x7f7f0000, currentMode.GetWidth() / 2 - 10, currentMode.GetHeight() / 2, strText);
	hr = pDevice -> EndScene();
	hr = pDevice -> Present( NULL, NULL, NULL, NULL);
}
вот так инициализируется Direct3D:
//Инициализация
bool Direct3DRender::InitRender(HWND hWnd, bool videoMode)
{
	try {
		OutMessage(Console::INFO_MESSAGE, "%s", "Инициализвация Direct3D рендера...\n");
		//для результата
		HRESULT hr = 0;
		if (videoMode)//если нужно инициализировать видео режим
			InitVideoModes();//тут инициализация видережима чере СhangeDisplaySettings
		OutMessage(Console::INFO_MESSAGE, "%s", "Создание основного объекта Direct3D:");
		//создать основной объект Direct3D
		pD3D = Direct3DCreate9(D3D_SDK_VERSION);
		if (!pD3D)
			throw "Не могу создать устройство Direct3D";
		OutMessage(Console::INFO_MESSAGE_NO_TIME, "%s", " Ok\n");
		//массив способов обработки вершин
		unsigned long BehaviorFlags[]  = {	D3DCREATE_HARDWARE_VERTEXPROCESSING,
									D3DCREATE_SOFTWARE_VERTEXPROCESSING,
									D3DCREATE_MIXED_VERTEXPROCESSING
								};
		unsigned int i = 0;
		D3DDISPLAYMODE d3ddm;
		memset(&d3ddm, 0, sizeof(D3DDISPLAYMODE));
		//получить информацию о видеоадаптере
		hr = pD3D -> GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
if (hr != S_OK)
			throw DXGetErrorString9(hr);
		//
		D3DPRESENT_PARAMETERS pPresentationParameters;
		//очистка структуры
		memset(&pPresentationParameters, 0, sizeof(pPresentationParameters));
		//полноэкранный режим
		pPresentationParameters.Windowed = FullScreen;
		//вертикальная синхронизация
		pPresentationParameters.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
		//формат обратного буфера
		pPresentationParameters.BackBufferFormat = d3ddm.Format;
		pPresentationParameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
		pPresentationParameters.EnableAutoDepthStencil = TRUE;
		pPresentationParameters.AutoDepthStencilFormat = D3DFMT_D16;
		pPresentationParameters.hDeviceWindow = hWnd;
		//pPresentationParameters.MultiSampleType = D3DMULTISAMPLE_3_SAMPLES;
		OutMessage(Console::INFO_MESSAGE, "%s", "Создание устройства Direct3D:");
		for (i = 0; i < 3; i++) {
			//получить флаг
			unsigned long flag = BehaviorFlags[i];
			//создать устройство
			hr = pD3D -> CreateDevice(D3DADAPTER_DEFAULT,	//адаптер по умолчанию
						D3DDEVTYPE_HAL,		//
						hWnd,				//Нандль окна
						flag,		//
						&pPresentationParameters,
						&pDevice);
				if (hr == S_OK)
					break;
			}
		if (hr != S_OK)
			throw DXGetErrorString9(hr);
		OutMessage(Console::INFO_MESSAGE_NO_TIME, " Ok\n");
		OutMessage(Console::INFO_MESSAGE, "%s", "Создание стека матриц...");
		hr = D3DXCreateMatrixStack(0, &matStack);
		if (hr != S_OK) {
		OutMessage(Console::ERROR_MESSAGE, "%s%s%s", "Ошибка Direct3D: ", DXGetErrorString9(hr), "\n" );
		}
		else
			OutMessage(Console::INFO_MESSAGE_NO_TIME, "%s", " Ok\n");
		OutMessage(Console::INFO_MESSAGE_NO_TIME, "%s", " Ok\n");
..тут всевозможные настройки Direct3D текстуры, освещение и т.д.
		//инициализация текста
		TextInit(TEXT_HEIGHT, TEXT_WIDTH, "Times New Roman", _text);
.....
	//применить к камере тут настройка перспективной проекции
		ApplyCamera(currentMode.GetWidth(), currentMode.GetHeight());
....
		OutMessage(Console::INFO_MESSAGE, "%s", "инициализвация Direct3D рендера завершена\n");
....
	}
	catch (const exception& e ) {
		OutMessage(Console::ERROR_MESSAGE, "%s%s", " Произошло исключение C++: ", e.what());
		return false;
	}
	catch(const char* Message) {
		OutMessage(Console::ERROR_MESSAGE, "%s%s%s", "Ошибка Direct3D: ", Message, "\n");
		return false;
	}
	return true;
}

Правка: 22 фев. 2006 21:03

Новые версии ODE и Tokamak22 фев. 200618:07#7
novice
пожалуйста, дай мне знать как вообще Tokamak,  просто начал программировние физики с него изучать...
Кто читал книгу Дизайн и эволюция языка C++, стоит ли ее покапать?22 фев. 200618:04#4
the_siv
сапасибо за инфу.
Жир
>Плюс немного устарела, т.к. написана в 1994 году, до стандартизации.
дак она же за 2006 год!
или ты не про нее? или про ту что за 2000 год?
Статья22 фев. 200616:28#11
Bazzilic
отличная статья  есть небольшой недочет насчет DirectX:
>это хорошо вам знакомые OpenGL и DirectX
может быть точнее будет Direct3D вместо DirectX?
еще мало для начинающих сказано про различные движки и сторонние бибилиотеки можно и физические упомянуть звук, скриптовые языки и т.д.

Странно а почему ее не перенести к общем статьям? она же по уровню не хуже других...

Правка: 22 фев. 2006 16:30

Трехмерная компьютерная графика - основные аспекты (комментарии)22 фев. 200616:21#6
Bazzilic
отличная статья  есть небольшой недочет насчет DirectX:
>это хорошо вам знакомые OpenGL и DirectX
может быть точнее будет Direct3D вместо DirectX?
еще мало для начинающих сказано про различные движки и сторонние бибилиотеки можно и физические упомянуть звук, скриптовые языки и т.д.

Правка: 22 фев. 2006 16:29

Builder6.022 фев. 200616:08#1
Serega_mexanik
подобие можно.
компилятор жутко убогий.
для подключения lib нужно их в формат в другой вроде перевести там в каталоге bin есть утелитка для этих целей. или найти либы под borland компилятор.
Новые версии ODE и Tokamak22 фев. 200616:04#5
novice
все отправил
waker
спасибо :) , сразу и не заметил
Новые версии ODE и Tokamak22 фев. 200614:55#3
novice
еще раз мыло какое?
Настройка компилятора (MS Visual C++ .NET 2003)22 фев. 200614:49#4
NightShadows
>Отгадай, почему простой inline не всегда делает подстановку? Потому что компилятор почти всегда лучше знает, что нужно >делать. Твой же дефайн явно подразумевает по любому поводу использовать принудительную подстановку.
да знаю я это все
я этот макрос применяю именно там где нужно вставить подстановку например в векторах матрицах и т.д.
в Direct3D математической бибилиотеке именно __forceinline.
Короче надо сделать поправку если хочешь явной подстановки подпбный макрос поможет

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

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