Сегодня
17 августа 2017
22:15
Вход Sign In Регистрация Sign Up Забыли пароль ? Forgot password ?
VARVE - Как создать flash баннер ?
Как создаются flash баннеры ? К содержанию Некоторое время назад, я не интересовался темой Как создать флеш-баннер ?, однако пришел момент, когда возникла задача по созданию анимированного флеш баннера и мне пришлось освоить азы этой технологии. В первую очередь вам понадобится программа Adobe
подробнее...

Теги

сайты, игры, дизайн, продвижение, php, html, css, my sql, c++, delphi, photoshop, 3ds max, fl studio, трекерская музыка, уроки

Статьи сайта

Добавляем созданный счетчик на все страницы Вашего Сайта

Создаем Сайт Своими Руками - Экспорт/импорт данных из баз данных MySQL

Создаем Сайт Своими руками - Введение в php

Создаем Сайт Своими Руками - Выводим дату и время в формате RU

игра Веселый Буквоежка

Что нужно знать для создания сайта ? Массивы в языке php

уроки php

Уроки 3ds max

КАК СОЗДАТЬ СВОЮ ИГРУ - Веселый Буквоежка Ваше Визуальное Шоу / Fun Letter Eater You Visual Show

обзор антивирусных средств защиты

как работает антивирус ?

КАК СОЗДАТЬ СВОЮ ИГРУ - Набор разработчика игр - Нечто: Необъяснимое - в плену желаний

Как создать игру ? - Программируем сами - Самый первый шаг

Как создать игру ? - Программируем сами - Самый первый шаг - страница 2

Как создать игру ? - Программируем сами - Содержание

Как создать игру ? - Программируем сами - Самый первый шаг - страница 3

Как создать игру ? - Программируем сами - Изучаем и модифицируем пример CreateDevice

Как создать игру ? - Программируем сами - пример CreateDevice страница 2

Как создать игру ? - Программируем сами - пример CreateDevice страница 3

Как создать игру - Vertices - Вершины - страница 1

Как создать игру - пример Matrices

Уроки Photoshop - Чудеса

Уроки Photoshop - Чудеса - Коллаж от нуля

Уроки Photoshop - Чудеса - Коллаж от нуля - страница 2

Уроки Photoshop - Чудеса - Коллаж от нуля - страница 3

Уроки Photoshop - Чудеса - Коллаж от нуля - страница 4

Купить Уроки Photoshop - Чудеса

Уроки Photoshop

Уроки Photoshop - Рисуем волка из мультфильма

Уроки Photoshop - Рисуем волка из мультфильма стр 2

Уроки Photoshop - Рисуем волка из мультфильма стр 3

Уроки Photoshop - Рисуем волка из мультфильма стр 4

Уроки Photoshop - Анимируем волка из мультфильма

Уроки Photoshop - Анимируем волка из мультфильма стр 2

Уроки Photoshop - Анимируем волка из мультфильма стр 3

Уроки Photoshop - Анимируем волка из мультфильма стр 4

Эмулятор игры Ну, Погоди!

Создание сайта для бизнеса

Пример игры с исходным кодом Donuts3D

Как создать игру ВЕСЕЛЫЙ БУКВОЕЖКА - программируем сами

Как создать игру ВЕСЕЛЫЙ БУКВОЕЖКА - создаем игровую оболочку

Открытый Полный Исходный код игры Дорога в Город

Как создать игру - Веселый Единственный Буквоежка - программируем основу будущей игры

Как создать игру - Веселый Единственный Буквоежка - выводим заставку

Как создать игру - Веселый Единственный Буквоежка - игровое меню

Как создать игру - Веселый Единственный Буквоежка - движение и анимация героя

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

Новый взгляд на очевидные вещи

Разработка программ на c++

Немного о музыке

Уроки Photoshop - Чудеса

Купить Уроки Photoshop - Чудеса

Онлайн Обучение, Репетитор

Уроки Photoshop - Рисуем и Анимируем

Уроки Photoshop - Рисуем и Анимируем - Урок 1 - Старт

GET и POST запросы

DirectX 9c - Изучаем пример MultAnimation

megainformatic cms Система Управления Контентом

Темы для WordPress

Что нужно для создания собственного сайта ?

Макет дизайна Вашего сайта

скачать megainformatic cms

для чего нужна карта сайта

Что нужно для создания собственного сайта ?

как создать инсталлятор для собственной cms

новые идеи, новые решения

Нововведения в megainformatic cms

Web Администрирование

Уроки Верстки

Система автоматизированной е-майл рассылки

Мысли о разном

Выгрузка файла на сайт

выпадающее меню на html и css

Использование checkbox

Краеугольная особенность работы Web-form на примере смены состояния checkbox

Технологии WEB

Технологии WEB - AJAX-запросы

Легко ли быть программистом

От идеи к реализации - трудно ли создавать сайты ?

Проблемы с кодировками при отображении страниц

игра Нечто: Необъяснимое Нить Накала - "в плену желаний"

Система Автоматизации Доставки Электронных Заказов megainformatic cms e-pro

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

Глубины программирования на C++

VARVE: Музыкальная страничка трэкера

Создание музыки и звука

VARVE: Создание музыки и звука: урок 2

Создание музыки и звука: урок 3 - настройка Impulse Tracker для работы в WinXP

Создание музыки и звука: урок 4 - Введение в Mod Plug Tracker

Создание музыки и звука: урок 5 - Первая композиция в Mod Plug Tracker

Создание музыки в Impulse Tracker 2.14 - урок 6 - Ввод Нот

Создание музыки в Impulse Tracker 2.14 Первая мелодия

Создание музыки в Impulse Tracker 2.14 Настройка параметров сэмплов

Создание музыки и звука: теория и практика создания трэкерской музыки

Что такое VARVE ?

Основы работы в Microsoft Visual Studio 2008 и DirectX 9 (DX SDK Aug 2008)

Введение в программирование игр на С++ для платформы DirectX 9 - Первый старт

Введение в программирование игр на С++ для платформы DirectX 9 - Меняем иконку приложения

Введение в программирование игр на С++ для платформы DirectX 9 Добавляем другую модель

Введение в программирование игр на С++ для платформы DirectX 9 Программирование игр в directx. Hello, World!

Введение в программирование игр на С++ для платформы DirectX 9 Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++ (часть 2)

Урок 2 Написание Win32-приложений. Обзор стартового кода Win32-приложения. Добавление ресурса текстовая строка

Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.

Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы.

Урок 4 часть 2 Win32. Диалог выбора цвета, смена цвета фона окна приложения

Написание приложения DirectX9c + MFC в среде MSVS 2005

Создание компьютерных игр на основе DirectX в среде Delphi 6, 7

Создание компьютерных игр на основе DirectX в среде Delphi 6, 7 - Почему избраны DX8 и Delphi ?

Основы IDirectMusic8 в среде Delphi6-7

Основы DirectInput8 в среде Delphi 7

Основы DirectSound8 в среде Delphi6-7

Плагин для 3DS MAX из DX9 SDK

Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2)

Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 2

     
  Набор разработчика игр - Нечто: Необъяснимое - в плену желаний  
     
 

Как создать игру ? - Программируем сами.

Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше.

 
     
  [содержание] [назад] [страница 1] [далее]  
     
  Vertices - Вершины - страница 1  
     
 

Итогом вставки новой созданной иконки должно стать для Вас сохранение изменений в проект (кнопка Save All на панели инструментов MSVS) и выполнением сборки проекта - по клавише [F7]. Еще раз напомню, что для сборки отладочной версии Debug нужно выбрать соответствующую конфигурацию проекта - в панели инструментов есть соответствующий выпадающий список.

Release - конфигурация отличается отсутствием отладочной информации, поэтому отлаживать приложение в таком режиме сборки нельзя. Зато когда Вы отловите все ошибки в коде, тогда можно создать окончательный релиз.

 
     
 

Если Вы уже вдоволь наигрались с проектом CreateDevice - сохраняем все внесенные изменения и закрываем проект File > Close Solution.

Переходим к примерам Vertices, Matrices, Lights, Textures, Meshes

 
     
  Все настойки в этих проектах нужно делать абсолютно аналогично, как это описывалось на протяжении наших предыдущих уроков, а более конкретно в уроке - Самый первый шаг - страница 3  
     
 

В примере Vertices рассматривается как работать с вершинами в 3d-пространстве.

Теперь уже наше приложение будет выполнять более полезную работу - выведет на экран разноцветный треугольник.

 
     
  пример Vertices  
     
  По сравнению с предыдущим примером CreateDevice здесь уже рассматривается как создается и инициализируется вершинный буфер для модели треугольника. Треугольник хоть и плоский, но это уже модель, в примере Matrices показано как создать его вращение вокруг своей оси (по оси Y).  
     
 

Функция wWinMain включает использование новой функции -

// Create the vertex buffer
if( SUCCEEDED( InitVB() ) )
{

//...

}

другое важное отличие - видоизменен цикл обработки сообщений, теперь он выглядит как

// Enter the message loop
MSG msg;
ZeroMemory( &msg, sizeof( msg ) );
while( msg.message != WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
Render();
}

Т. е. если сообщения поступают в приложение, они обрабатываются, если нет - выполняется функция Render - другими словами отрисовка выполняется во время нахождения приложения в состоянии бездействия Idle - это и есть то состояние, когда нет системных сообщений, адресованных Вашему приложению.

 
     
 

Функция InitVB

HRESULT InitVB()
{
// инициализируем вершины создаваемого треугольника

//заметьте, что цвет каждой вершины в формате AARRGGBB задается именно здесь!

//о формате задания цвета и определении конкретного цвета мы говорили в уроке - CreateDevice страница 2
CUSTOMVERTEX vertices[] =
{
{ 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
{ 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
};

// Создаем вершинный буфер. Здесь мы выделяем достаточно памяти для вершин
// (из буфера по-умолчанию) для хранения 3 вершин в собственном формате. Мы также
// определяем FVF, так что вершинный буфер знает, какие данные он хранит.

if( FAILED( g_pd3dDevice->CreateVertexBuffer( 3 * sizeof( CUSTOMVERTEX ),
0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
{
return E_FAIL;
}

// Теперь мы заполняем вершинный буфер. Для этого вызываем Lock() для VB
// для получения доступа к вершинам. Этот механизм необходим, поскольку
// буферы могут располагаться в памяти графического адаптера.

VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof( vertices ), ( void** )&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, vertices, sizeof( vertices ) );
g_pVB->Unlock();

return S_OK;
}

 
     
 

Функция Cleanup теперь включает освобождение объекта вершинного буфера.

Функция Render включает новый код для рисования модели треугольника -

// начало сцены
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
// Рисуем треугольник из вершин в буфере. Процесс включает несколько

// шагов. Мы передаем вершины в поток, поэтому первое - это определение
// источника для этого потока, это и есть наш вершинный буфер. Затем
// нам нужно позволить D3D узнать какой вершинный шейдер использовать.

// Полнофункциональные, настраиваемые вершинные шейдеры - это
// отдельная тема для разговора, но в большинстве случаев вершинный шейдер -
// просто FVF (Flexible Vertex Format), так что D3D узнает какой тип вершин
// мы применили. Наконец, Мы вызываем функцию DrawPrimitive() которая

// выполняет фактическое рисование
// нашей геометрии (в данном примере - всего лишь 1 треугольник).

g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );

// конец сцены
g_pd3dDevice->EndScene();
}

 
     
  Функция MsgProc не включает обработки сообщения WM_PAINT, потому что все d3d-приложения должны выполнять отрисовку находясь в состоянии Idle.  
     
 

Обратите внимание также на начало модуля Vertices.cpp

//-----------------------------------------------------------------------------
// Глобальные переменные
//-----------------------------------------------------------------------------

LPDIRECT3D9 g_pD3D = NULL; // используется для создания D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // наше устройство отрисовки
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; // буфер для хранения вершин

// структура определяющая собственный тип вершин
struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw; // преобразованная позиция вершины
DWORD color; // цвет вершины
};

// наш настраиваемый тип вершин FVF, который определяет какой тип вершин

// используется для их описания
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)

 
     
  Чтобы проверить насколько Вам ясно как работать с вершинами - попробуйте вывести вместо треугольника - квадрат. Цвета вершин также измените.  
     
  изображение модели квадрата  
     
 

Сначала посмотрите на приведенный рисунок и определите как были описаны координаты для треугольника:

150.0f, 50.0f - это вершина, отмеченная на рисунке цифрой 1,

250.0f, 250.0f - вершина номер 2 и

50.0f, 250.0f - вершина номер 3. Заметьте, что вершины определены в порядке обхода по-часовой стрелке. Это правило для определения видимых граней модели. Если вершины оказываются повернуты к экрану той гранью, где они следуют против часовой стрелки, то такая грань считается невидимой для зрителя стороной и не отрисовывается !

 
     
 

Теперь можно легко определить вершины для нашего квадрата -

CUSTOMVERTEX vertices[] =
{
{ 50.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, },

{ 250.0f, 50.0f, 0.5f, 1.0f, 0xff00ff00, },

{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },

{ 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
};

 
     
 

Однако даже правильно изменив количество вершин с 3 на 4 и правильно указав это число в строке кода

if( FAILED( g_pd3dDevice->CreateVertexBuffer( 4 * sizeof( CUSTOMVERTEX ),
0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )

И указав количество отрисовываемых примитивов в функции Render в строке -

g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );

в количестве 2 вместо 1

 
     
  Результатом будет -  
     
  попытка рисования квадрата 1  
     
  А всё дело в том, что D3D-приспособлен понимать только треугольные грани - состоящие из треугольников. Это сделано из-за того, что три вершины образующие треугольную грань всегда находятся в одной плоскости и следовательно так проще обсчитывать прорисовку сложных моделей.  
     
  Значит нам, для создания модели квадрата, состоящего из 2х треугольных граней нужно использовать не 4, а 6 вершин -  
     
 

CUSTOMVERTEX vertices[] =
{
{ 50.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, },

{ 250.0f, 50.0f, 0.5f, 1.0f, 0xff00ff00, },

{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff0000ff, },

{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },

{ 50.0f, 250.0f, 0.5f, 1.0f, 0xffffff00, },

{ 50.0f, 50.0f, 0.5f, 1.0f, 0xff0000ff, },


};

 
     
  попытка рисования квадрата 2  
     
  Важен и порядок, в котором определена вторая тройка вершин. Если они будут определены в другом порядке, то вторая грань (второй треугольник) выведен не будет. Попробуйте изменить порядок второй тройки вершин и убедитесь в этом сами.  
     
  На рисунке также отчетливо видно какая из вершин в какой цвет окрашена, так что будет более понятно где и какая вершина. На первых порах задайте для каждой из вершин свой цвет - тогда легче будет увидеть где нужная вершина.  
     
     
     
     
     
  [содержание] [назад] [страница 3] [далее]  
     
 

Оставленные комментарии



Рейтинг@Mail.ru
Время загрузки: 0,3914