Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по DirectX

  Все выпуски  

Уроки по DirectX


Информационный Канал Subscribe.Ru

Direct3D для Visual C++. Рассылки сайта progs.biz
Рассылка № 8
 
Начало > DirectX > Direct3D > VC++.NET > Урок 5

С. Гайдуков. OpenGL. Профессиональное программирование трехмерной графики на C++.
С. Гайдуков. OpenGL. Профессиональное программирование трехмерной графики на C++
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 5.

Direct3D для Visual C++
Урок 5. Выводим квадрат

На этом уроке, который является логическим продолжением предущего, мы превратим наш треугольник в квадрат.

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

Приступаем к практическому выполнению этих шагов.

Шаг первый - добавляем еще три вершины (а заодно поменяем и первый три, чтобы у нас получился действительно квадрат, а не непонятно что):

// Инициализация вершинного буфера.
HRESULT InitVB()
{
    // Задаем вершины квадрата.
    CUSTOMVERTEX vertices[] =
    {
        {30.0f, 30.0f, 0.0f, 1.0f, 0xffffff00},
        {130.0f, 30.0f, 0.0f, 1.0f, 0xff00ff00},
        {30.0f, 130.0f, 0.0f, 1.0f, 0xff0000ff},
        {130.0f, 130.0f, 0.0f, 1.0f, 0xffffff00},
        {30.0f, 130.0f, 0.0f, 1.0f, 0xff0000ff},
        {130.0f, 30.0f, 0.0f, 1.0f, 0xff00ff00},
    };
    ...

Размеры нашего квадрата будут 100 на 100, а пара противоположных вершин - (30, 30) и (130, 130) соответственно.

Шаг второй. В вызове функции CreateVertexBuffer в первом параметре ставим 6 (т. е. число вершин):

    // Создаем вершиный буфер.
    if(FAILED(g_pd3dDevice->CreateVertexBuffer(
        6*sizeof(CUSTOMVERTEX), // New value 6
        0, D3DFVF_XYZRHW|D3DFVF_DIFFUSE,
        D3DPOOL_DEFAULT, &g_pVB, NULL )))
    {
    ...

И, наконец, шаг три. В отрисовке сцены (т. е. в вызове метода Render) вызывая метод DrawPrimitive пишем у него последним параметром 2 (новое число треугольников):

VOID Render()
{
    ...
    // Начало отрисовки сцены.
    if(SUCCEEDED(g_pd3dDevice->BeginScene()))
    {
        // Отрисовка треугольника.
        g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX));
        g_pd3dDevice->SetFVF(D3DFVF_XYZRHW|D3DFVF_DIFFUSE);
        // Ставим число треугольников (т. е. 2).
        g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);
        ...

Компилируем и запускаем программу. На этот раз мы увидим квадрат.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX new!
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2004 сайт progs.biz
© 2002-2004 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.directxlessons
Отписаться

В избранное