| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Использование файлов .Х формата
Все кому интересна данная тема подарок к празднику (к сожалению он уже прошел). Следующий урок посвящен основам использование (т.е. загрузке и отрисовке) трехмерных моделей из .x файлов. В файлах данного формата сохраняются трехмерные объекты, их материалы, нормали, описание текстур, анимация, и т.д. Создать их можно практически в любом современном редакторе трехмерных объектов. Итак, начнем... Для начала создадим следующие переменные : LPD3DXMESH p_d3dx_mesh = NULL; int iSizeOfMeshVertex=0; --- первая будет представлять сам трехмерный
объект Далее создадим функцию для загрузки объекта из файла следующего вида :
//-----------------------------------------------------------------------------
// Name: LoadMesh (char*)
// Desc:
//-----------------------------------------------------------------------------
int LoadMesh (char *filename)
{
D3DXLoadMeshFromX (filename, D3DXMESH_SYSTEMMEM, p_d3d_Device, NULL, NULL, NULL, &p_d3dx_mesh);
if(p_d3dx_mesh->GetFVF() & D3DFVF_XYZ) iSizeOfMeshVertex += sizeof(float)*3;
if(p_d3dx_mesh->GetFVF() & D3DFVF_NORMAL) iSizeOfMeshVertex += sizeof(float)*3;
if(p_d3dx_mesh->GetFVF() & D3DFVF_TEX1) iSizeOfMeshVertex += sizeof(float)*2;
p_d3dx_mesh->GetVertexBuffer (&p_VertexBuffer);
p_d3dx_mesh->GetIndexBuffer (&p_IndexBuffer);
return 1;
};
данная функция будет у нас загружать данные их файла. В ней использована функция D3DXLoadMeshFromX() предназначенная как раз для данной цели. Как параметры ей предаются : --- имя файла для использования Затем мы вычисляем необходимый объем памяти для хранения нашего объекта (в соответствии с тем, какие флаги у нас имеются). Следующим шагом мы извлекаем указатели на буфер вершин и буфер индексов данного объекта, они нам понадобятся при отрисовке. Функция для загрузки объектов у нас теперь имеется, следовательно его уже можно загружать из файла:
LoadMesh ("bigtree.x");
Последний шаг (точнее предпоследний, последний - уничтожение объекта из памяти) это отрисовка. Мы уже имеем в нашей программе загруженный ранее объект, следовательно, теперь мы можем рисовать его. Что мы и проделаем : p_d3d_Device->BeginScene (); p_d3d_Device->SetVertexShader (D3DFVF_CUSTOMVERTEX); p_d3d_Device->SetStreamSource (0, p_VertexBuffer, iSizeOfMeshVertex); p_d3d_Device->SetIndices (p_IndexBuffer, 0); p_d3d_Device->SetMaterial (&mtrl1); p_d3d_Device->DrawIndexedPrimitive (D3DPT_TRIANGLELIST, 0, p_d3dx_mesh->GetNumVertices(), 0, p_d3dx_mesh->GetNumFaces()); p_d3d_Device->EndScene (); здесь дана вся последовательность отрисовки. Первые две строчки вам уже знакомы; в третьей строке происходит установка источника данных, причем тут мы используем подсчитанный ранее объем памяти занимаемой одной веоршиной объекта; в четвертой строке - мы устанавливаем источник индексов; потом материал; и собственно сама отрисовка - используется функция DrawIndexedPrimitive(), она предназначена для отрисовки индексированных примитивов. А вот теперь и последний шаг - уничтожение объекта и освобождение занимаемого им объема памяти : _RELEASE_ (p_VertexBuffer); _RELEASE_ (p_IndexBuffer); _RELEASE_ (p_d3d_Device); _RELEASE_ (p_d3d); Вот теперь шаги кончились, и следовательно урок окончен. После того как вы проделаете все здесь написанное, вы должны получить картинку примерно следующего вида:
Теперь все.. Пока всем.. Рубрика: 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 |
Контакты |
Реклама на сайте
|