[Девятка] Хочу код.

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

[Девятка] Хочу код.

Сообщение GSerg » 13.01.2006 (Пт) 19:02

Вопрос дебильный, тем не менее...


Дайте мне код на C++ по работе с DX9.
Абсолютный примитив. Никаких созданий окон и никаких проектов типа dsw. Две функции: одна принимает hwnd и создаёт на его основе девайс, другая принимает девайс параметром и рисует на нём какую-нибудь ерунду. Хоть квадрат текстурированный. Или чуть сложнее что, но с сохранением примитивности. Никакого инпута, сети и звука.
Большое спасибо :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 13.01.2006 (Пт) 19:09

DX SDK, смотри Tutorials - проще не бывает.
Неужели :shock: ... молчу :wink:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.01.2006 (Пт) 19:17

Вредный ты, Mikle :)

Я про SDK знаю :)
Но я также помню, сколько мне пришлось страдать фигнёй и разбираться в совершенно чуждом материале для того, чтобы освоить рендеринг чайника в зеркале пару лет назад :) Сколько мне пришлось вырезать и переделывать, и сколько на это ушло времени... Потому и прошу заняться данным делом лиц, к тому наиболее способных :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 13.01.2006 (Пт) 19:18

ну на...

Код: Выделить всё
//-----------------------------------------------------------------------------
// Name: InitD3D()
// Desc: Initializes Direct3D
//-----------------------------------------------------------------------------
HRESULT InitD3D( HWND hWnd )
{
    // Create the D3D object.
    if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
        return E_FAIL;

    // Set up the structure used to create the D3DDevice
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory( &d3dpp, sizeof(d3dpp) );
    d3dpp.Windowed = TRUE;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

    // Create the D3DDevice
    if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &d3dpp, &g_pd3dDevice ) ) )
    {
        return E_FAIL;
    }

    // Device state would normally be set here

    return S_OK;
}


второе сейчас от руки набросаю...
ХЎ

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 13.01.2006 (Пт) 19:25

рисует прямоугольник на экране

void drawQuad(LPDIRECT3DDEVICE9 Dev)
{

D3DTLVERTEX Vertex[4];
Vertex(0) = CreateD3DTLVertex(10, 10, 0, 0, color);
Vertex(1) = CreateD3DTLVertex(110, 10, 1, 0, color);
Vertex(2) = CreateD3DTLVertex(10, 110, 0, 1, color);
Vertex(3) = CreateD3DTLVertex(110, 110, 1, 1, color);

Dev.SetFVF (FVF_TLVERTEX);
Dev.SetRenderState (D3DRS_CULLMODE, D3DCULL_NONE);
Dev.DrawPrimitiveUP (D3DPT_TRIANGLESTRIP, 2, Vertex, sizeof(D3DTLVERTEX ));

}


это я полагаю переводить на С не нада и так все ясно...

Public Function CreateD3DTLVertex(x As Single, y As Single, tu As Single, tv As Single, color As Long) As D3DTLVERTEX
With CreateD3DTLVertex
.sx = x: .sy = y: .tu = tu: .tv = tv: .color = color: .rhw = 1: .specular = .color
End With
End Function
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.01.2006 (Пт) 19:28

Спасибо, но... чуть меньше примитива... текстурку там... источник света...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 13.01.2006 (Пт) 19:36

GSerg
Только хотел посоветовать обратиться к d3drm, а он тут как тут.
А я в СИ не в зуб ногой, но когдато начинал освоение DX по СИшному SDK.
А вообще я не вредный - посоветовал, что в SDK самое простое. :cry:

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 13.01.2006 (Пт) 19:40

декларации:
LPDIRECT3DTEXTURE9 Tex;

там где инициализация:
D3DXCreateTextureFromFile(g_pd3dDevice, "tex.jpg", &Tex );

там, где прорисовка, перед drawPrmitive:
Dev->SetTexture (0, &Tex);


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

GSerg, хоть и не просил, тем не менее цепляю туторы, потому что это то, что ты просишь. 250 кб для 6ти примеров, найдешь там все, что тебя интересует. Там в каждом проекте всего по одному cpp файлу, причем очень короткому и с каментами.

Код: Выделить всё
//-----------------------------------------------------------------------------
// Name: InitD3D()
// Desc: Afftar zhzhots and writes eshe.
// Caperait (ce) Mecrasoft Carparashen. Ol raits reserved.
//-----------------------------------------------------------------------------


Гайдар увидит-убьет...
У вас нет доступа для просмотра вложений в этом сообщении.
ХЎ

leaveIIIusion
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 30.12.2005 (Пт) 19:01
Откуда: Днепропетровск

Сообщение leaveIIIusion » 13.01.2006 (Пт) 20:39

Вот примеры из книги. Ресурсы положил отдельно от папок. Сдесь какая-то глючная версия SDK используется - шрифт у меня так и не заработал.

Надеюсь меня Гайдар не забанит
У вас нет доступа для просмотра вложений в этом сообщении.
Basic .NET ruless world!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2006 (Сб) 7:52

Нда...

Вот об этом я и говорил.


D3DTLVERTEX определён в d3dtypes.h.
В начале d3dtypes.h стоит: не используйте этот хэдер для DX8 и выше. Не использую.

Тогда где определён D3DTLVERTEX? Только там.

Вывод?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 14.01.2006 (Сб) 9:14

Немного не понимаю о чем речь. Если нужно использовать данную конструкцию без этого заголовочного файла, то всегда можно создать свой класс или структуру и использовать его.
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2006 (Сб) 12:53

Редиска ты, d3drm...

Откуда я знаю, что надо вызывать reset и present? Откуда я знаю про beginscene/endscene, без которых ничего не работает? Откуда я знаю, какой надо ставить режим рендеринга - потому что лицезрю чёрный квадрат вместо текстуры?
Я же не зря просил полные самодостаточные функции...
Злые вы, уйду я от вас :(
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 14.01.2006 (Сб) 14:07

Я вот понимаю GSerg'a. Поэтому использую движки...

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 14.01.2006 (Сб) 14:08

Фигеваю. )

Думал выложенные туторы обеспечат всей минимально необходимой тебе информацией.

в принципе в том коде, что я написал я упустил лишь Clear и Present. Скопируй из примеров.

beginscene/endscene не нужны для моего кода, так как рисуются 2Д примитивы, так что работать должно и без этих функций. поправьте меня, если я не прав.

про режим рендеринга, так полагаю, ты имел ввиду отключение освещения? Чесс говоря все время забываю... :oops:
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2006 (Сб) 14:15

d3drm писал(а):Фигеваю. )

Фигевай )
Кодить под DX я не умею и не имею цели научиться, во всяком случае пока - потому и прошу полностью готовый код.

d3drm писал(а):Думал выложенные туторы обеспечат всей минимально необходимой тебе информацией.

Таки нет, приходится по этому разделу копать, дабы ниформацию из приаттаченных примеров черпать.
А на это нет ни времени, ни желания...

d3drm писал(а):в принципе в том коде, что я написал я упустил лишь Clear и Present. Скопируй из примеров.

До этого я дошёл сам, и к моменту дохождения уже считал тебя редиской...

d3drm писал(а):beginscene/endscene не нужны для моего кода, так как рисуются 2Д примитивы, так что работать должно и без этих функций. поправьте меня, если я не прав.

Поправляю: без begin/end DrawPrimitiveUP возвращала D3DERR_INVALIDCALL. С добавлением, стала рисовать.

d3drm писал(а):про режим рендеринга, так полагаю, ты имел ввиду отключение освещения? Чесс говоря все время забываю... :oops:

Я не знаю, что именно. Я просто вижу чёрный квадрат.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 14.01.2006 (Сб) 16:35

отключение освещения - d3dDevice.SetRenderState, Lightning, 0

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 14.01.2006 (Сб) 16:52

Точнее D3DDevice->SetRenderState(D3DRS_LIGHTING, 0);
#define ROFL 0xDDDD

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2006 (Сб) 17:35

И до этого я дошёл - однако квадрат чёрный.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 14.01.2006 (Сб) 18:58

Проверь при создании вертексов свойсво color
попробуй
color = D3DCOLOR_XRGB(255,255,255);
#define ROFL 0xDDDD

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.01.2006 (Сб) 19:21

Да! Именно так.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 14.01.2006 (Сб) 21:56

Запости код, посмотрим, что там не так!
#define ROFL 0xDDDD

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.01.2006 (Вс) 7:49

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

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 15.01.2006 (Вс) 17:22

Ну и извини, но так не поймём.Может тебе кинуть ещё примеры?
#define ROFL 0xDDDD

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.01.2006 (Вс) 18:16

DirectXManiac, я ж написал - всё работает уже :)
И вообще, суть не в коде, а в его назначении, которое он с честью выполнил :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 15.01.2006 (Вс) 20:56

Извини, не понял!!!
#define ROFL 0xDDDD

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 15.01.2006 (Вс) 21:35

GSerg, даже немного интересно, а что, многоуважаемый GSerg, вы такого прекрасного сделали? :)
ХЎ


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31

    TopList