| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: Графика и игроделание DirectX, OpenGL etc.) :: Direct3D :: Первичная инициализация приложения
Первичная инициализация приложения
Решил я в общем начать программирование трехмерной графики с использованием Direct3D, причем с восьмой версией. Сразу начнем с программирования. Для работы нашего приложения нам, как минимум, необходимо его инициализировать - т.е. создать окно, обработчик сообщений и другие необходимые функции. Я надеюсь, что те кто интересуются программированием трехмерной графики средствами Direct3D8, для Windows, как минимум знакомы с самыми азами программирования для данной операционной системы. Для начала вам необходимо создать проект для дальнейшей работы :
Затем, в зависимости от того, каким именно компилятором вы пользуетесь (точнее какой его версией, я уже сказал, что буду использовать Microsoft Visual C++), у вас либо просто будет создан пустой проект (VCPP5), либо появится диалоговое окно на котором вам предлагается выбрать тип создаваемого проекта - пустое проект, простое Win32 приложение или типичное приложение "Hello, World". Лучше всего выбрать первое - пустой проект - так как далее идет полный код необходимого нам приложения, и вы можете просто его скопировать и сразу компилировать - должно работать. Следом я привожу исходный код инициализации приложения, который я использую сам и который будет использоваться в дальнейшем, для последующих уроков.
//-----------------------------------------------------------------------------
//
// Project -> D3D8 Tutorial 01 - Application Initialization
// File -> Tutorial_01 Application Initialization.cpp
//
// Desc -> main module
//
//
// Autor -> Denis "Mr.Snow" Kozhukhov
// Choco Snow Creation
// dkcscPortal
// URL -> http://www.vvsu.ru/dkcsc
// mailto -> dkcsc@yahoo.com
// UCQ UIN -> 50714029
//
// Last Update 9.04.2001
//
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
#define APPNAME
"http://www.vvsu.ru/dkcsc === Mr.Snow D3D8 Tutorial_01 - Application Initialization"
#define APPTITLE
"http://www.vvsu.ru/dkcsc === Mr.Snow D3D8 Tutorial_01 - Application Initialization"
#define _RELEASE_(p) { if(p) { (p)->Release(); (p)=NULL; };};
#define _DELETE_(p) { if(p) { delete (p); (p)=NULL; };};
#include <windows.h>
#include <time.h>
BOOL bActive = true;
char AppDir[1024];
HWND hWnd;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Name: WindowProc ()
// Desc:
//-----------------------------------------------------------------------------
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_ACTIVATE:
bActive = LOWORD(wParam);
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
case WM_SETCURSOR:
SetCursor (NULL);
break;
};
return DefWindowProc(hWnd, message, wParam, lParam);
};
//-----------------------------------------------------------------------------
// Name: WindowInit ()
// Desc:
//-----------------------------------------------------------------------------
bool WindowInit (HINSTANCE hThisInst, int nCmdShow)
{
WNDCLASS wcl;
wcl.hInstance = hThisInst;
wcl.lpszClassName = APPNAME;
wcl.lpfnWndProc = WindowProc;
wcl.style = 0;
wcl.hIcon = LoadIcon (hThisInst, IDC_ICON);
wcl.hCursor = LoadCursor (hThisInst, IDC_ARROW);
wcl.lpszMenuName = NULL;
wcl.cbClsExtra = 0;
wcl.cbWndExtra = 0;
wcl.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
RegisterClass (&wcl);
hWnd = CreateWindowEx (
WS_EX_TOPMOST,
APPNAME,
APPTITLE,
WS_OVERLAPPEDWINDOW,
0, 0,
640,
480,
NULL,
NULL,
hThisInst,
NULL);
if(!hWnd) return false;
return true;
};
//-----------------------------------------------------------------------------
// Name: AppInit()
// Desc: Initializes Aplication
//-----------------------------------------------------------------------------
bool AppInit (HINSTANCE hThisInst, int nCmdShow)
{
srand (time(0)); // randomize timer
if(!WindowInit (hThisInst, nCmdShow)) return false;
ShowWindow (hWnd, nCmdShow);
UpdateWindow (hWnd);
return true;
};
//-----------------------------------------------------------------------------
// Name: RenderScreen ()
// Desc: Draws the scene
//-----------------------------------------------------------------------------
void RenderScreen (void)
{
};
//-----------------------------------------------------------------------------
// Name: WinMain ()
// Desc:
//-----------------------------------------------------------------------------
int APIENTRY WinMain (HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if(!AppInit (hThisInst, nCmdShow)) return false;
while (1)
{
if(PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
{
if(!GetMessage (&msg, NULL, 0, 0)) break;
TranslateMessage (&msg);
DispatchMessage (&msg);
}
else
if(bActive) { RenderScreen (); };
};
return 0;
};
//-----------------------------------------------------------------------------
// EOF
//-----------------------------------------------------------------------------
В данном примере мы создаем простейшее приложение, которое отображает простое окно. Единственное, на что следует обратить внимание, это строка в функции WindowProc () : case WM_SETCURSOR: SetCursor (NULL); break; Таким способом мы убираем стандартный курсор, так как он нам в последствии не нужен. Так же необходимо обратить внимание на два определения макросов, которые выполняют соответственно освобождение использованных интерфейсов, и удаление динамического массива :
#define _RELEASE_(p) { if(p) { (p)->Release(); (p)=NULL; };};
#define _DELETE_(p) { if(p) { delete (p); (p)=NULL; };};
Рубрика: Direct3D
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|