Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2010, 09:34   #1
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию Проблема с компиляцией

Здравствуйте, дорогие друзья!
Проблема у меня такая. Занимаюсь я по книжке, Direct X 10, решил осваивать, но вот столкнулся с совсем неожиданной проблемой.
Уже на первом примере:
Код:
#include <windows.h>
#include <d3dx10.h>
#include <d3d10.h>

#define WINDOW_WIDTH  640
#define WINDOW_HEIGHT 480

HWND        g_hWnd = NULL;
D3D10_DRIVER_TYPE       g_driverType = D3D10_DRIVER_TYPE_NULL;
ID3D10Device*           g_pd3dDevice = NULL;
IDXGISwapChain*         g_pSwapChain = NULL;
ID3D10RenderTargetView* g_pRenderTargetView = NULL;

HRESULT             InitWindow( HINSTANCE hInstance, int nCmdShow );
HRESULT				InitDirect3D10();
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
void                Cleanup();
void                RenderScene();

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	// Создаем окно приложения
	if( FAILED( InitWindow( hInstance, nCmdShow ) ) )
		return 0;
    // Инициализируем Direct3D
	if( FAILED( InitDirect3D10() ) )
	{
		Cleanup();
		return 0;
	}

	// Цикл обработки сообщений
	MSG msg = {0};
	while( WM_QUIT != msg.message  )
	{
		if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
		{
			TranslateMessage( &msg );
			DispatchMessage( &msg );
		}
		else
		{
			RenderScene();
		}

	}
	Cleanup();
	return (int) msg.wParam;
}

// Регистрация класса и создание окна

HRESULT InitWindow( HINSTANCE hInstance, int nCmdShow )
{
	// Регистрируем класс окна
	WNDCLASSEX wc;
	wc.cbSize = sizeof(WNDCLASSEX); 
	wc.style          = CS_HREDRAW | CS_VREDRAW;
	wc.lpfnWndProc    = WndProc;
	wc.cbClsExtra     = 0;
	wc.cbWndExtra     = 0;
	wc.hInstance      = hInstance;
	wc.hIcon          = NULL;
	wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
	wc.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName   = NULL;
	wc.lpszClassName  = L"SimpleWindowClass";
	wc.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
	if( !RegisterClassEx(&wc) )
		return E_FAIL;

	// Создаем окно
	g_hWnd = CreateWindow(
		L"SimpleWindowClass", 
		L"DirectX 10: Первое приложение Direct3D 10", 
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, 
		CW_USEDEFAULT, 
		WINDOW_WIDTH,
		WINDOW_HEIGHT,
		NULL,
		NULL,
		hInstance,
		NULL);

	if( !g_hWnd )
		return E_FAIL;
	// Отображаем окно на экране
	ShowWindow( g_hWnd, nCmdShow );
	UpdateWindow(g_hWnd);

	return S_OK;
}

// Инициализация Direct3D

HRESULT InitDirect3D10()
{
	HRESULT hr = S_OK;

	// Размеры клиентской области окна окна
	RECT rc;
	GetClientRect( g_hWnd, &rc );
	UINT width = rc.right - rc.left;
	UINT height = rc.bottom - rc.top;

	D3D10_DRIVER_TYPE driverTypes[] = 
	{
		D3D10_DRIVER_TYPE_HARDWARE,
		D3D10_DRIVER_TYPE_REFERENCE,
	};
	UINT numDriverTypes = sizeof(driverTypes) / sizeof(driverTypes[0]);
 
	DXGI_SWAP_CHAIN_DESC sd;
	ZeroMemory( &sd, sizeof(sd) );
	sd.BufferCount = 1;
	sd.BufferDesc.Width = width;
	sd.BufferDesc.Height = height;
	sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
	sd.BufferDesc.RefreshRate.Numerator = 60;
	sd.BufferDesc.RefreshRate.Denominator = 1;
	sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
	sd.OutputWindow = g_hWnd;
	sd.SampleDesc.Count = 1;
	sd.SampleDesc.Quality = 0;
	sd.Windowed = TRUE;
	sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;

	// Пытаемся создать устройство, проходя по списку
	// как только получилось - выходим из цикла
	for( UINT driverTypeIndex = 0; driverTypeIndex < numDriverTypes; driverTypeIndex++ )
	{
		g_driverType = driverTypes[driverTypeIndex];
		hr = D3D10CreateDeviceAndSwapChain( NULL, g_driverType, NULL, 0, 
			D3D10_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice );
		if( SUCCEEDED( hr ) )
			break;
	}
	if( FAILED(hr) )
		return hr;

	ID3D10Texture2D *pBackBuffer;
	// Получим доступ к вторичному буферу с индексом 0
	hr = g_pSwapChain->GetBuffer( 0, __uuidof( ID3D10Texture2D ), (LPVOID*)&pBackBuffer );
	if( FAILED(hr) )
		return hr;
    // Создадим представление данных
	hr = g_pd3dDevice->CreateRenderTargetView( pBackBuffer, NULL, &g_pRenderTargetView );
	pBackBuffer->Release();
	if( FAILED(hr) )
		return hr;
    // Свяжем буфер визуализации с графическим конвейером
	g_pd3dDevice->OMSetRenderTargets( 1, &g_pRenderTargetView, NULL );

	// Настроим область отображения
	D3D10_VIEWPORT vp;
	vp.Width = width;
	vp.Height = height;
	vp.MinDepth = 0.0f;
	vp.MaxDepth = 1.0f;
	vp.TopLeftX = 0;
	vp.TopLeftY = 0;
	g_pd3dDevice->RSSetViewports( 1, &vp );

	return S_OK;
}

// Прорисовка трехмерной сцены

void RenderScene()
{
	// Очищаем вторичный буфер
	float ClearColor[4] = { 0.1f, 0.5f, 0.1f, 1.0f }; //компоненты красного, зелеого, синего, прозрачность
	g_pd3dDevice->ClearRenderTargetView( g_pRenderTargetView, ClearColor );

	g_pSwapChain->Present( 0, 0 );
}

// Обработка сообщений
ThisIzGame вне форума Ответить с цитированием
Старый 30.01.2010, 09:35   #2
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию

Код:
LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{    
	switch (message) 
	{

	case WM_DESTROY:
		PostQuitMessage(0);
		break;

	default:
		return DefWindowProc(hWnd, message, wParam, lParam);
	}

	return 0;
}

// Очищаем память 

void Cleanup()
{
	if( g_pd3dDevice ) g_pd3dDevice->ClearState();

	if( g_pRenderTargetView ) g_pRenderTargetView->Release();
	if( g_pSwapChain ) g_pSwapChain->Release();
	if( g_pd3dDevice ) g_pd3dDevice->Release();
}
В проекте ошибок быть не должно, всё делал правильно, подключил библиотеки,и т.д.
Но компилятор выдаёт совсем неожиданную ошибку

1>------ Build started: Project: 1, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>c:\program files\microsoft directx sdk (august 2006)\include\d3d10.h(6) : fatal error C1014: too many include files : depth = 1024
1>Build log was saved at "file://c:\Users\мир\Documents\Visual Studio 2008\Projects\1\1\Debug\BuildLog.ht m"
1>1 - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Что это? Как это исправить, пробовал лазил по ин/яз сайтам, но толку это не принесло.
ThisIzGame вне форума Ответить с цитированием
Старый 30.01.2010, 12:35   #3
--=SaNitinDG=-
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 61
По умолчанию

Мне обычно Goole помогает избавляться от ошибок во время компиляции
если я от них сам не могу избавиться, вот что он выдаёт на error C1014.

Такая проблема как у тебя вроде обсуждалось
здесь
_http://www.cyberforum.ru/visual-cpp/thread46646-page2.html
и здесь
_http://forum.vingrad.ru/findpost-1816051.html
Опыт не пропьешь если он есть=)))
--=SaNitinDG=- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с компиляцией задачи madagascar Помощь студентам 2 18.12.2009 17:10
Проблема с компиляцией apocalypce Общие вопросы Delphi 7 02.10.2009 18:31
Проблема с компиляцией программ из нескольких исходных файлов Palermo Общие вопросы C/C++ 15 02.06.2009 23:16
Проблема с компиляцией С++ Il'9 Помощь студентам 7 12.02.2009 19:18
проблема с компиляцией @gent БД в Delphi 5 11.09.2007 10:09