![]() |
|
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]()
|
|
| Div |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 3.6.2005 Где: Первоуральск Репутация: 1 Всего: 1 |
Как можно вывести небольшую картинку на экран в DirectX. Чтобы она имела один розрачный цвет и выводилась поверх объектов. Типа менюшек во время игры.
|
|||
|
||||
| empter |
|
|||
![]() Фанат ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 20.5.2005 Репутация: 3 Всего: 4 |
Попробуй спрайтом
|
|||
|
||||
| Div |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 3.6.2005 Где: Первоуральск Репутация: 1 Всего: 1 |
Всмысле отрисовать полигон с текстурой прямо перед экраном?
|
|||
|
||||
| empter |
|
|||
![]() Фанат ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 20.5.2005 Репутация: 3 Всего: 4 |
Вобщем да, хотя я этим еще не занимался посмотри пример здесь, кое что дельное там должно быть.
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
вывод картинки это текстурирование можно до восьми текстур
на один объект в том числе и на буфер. if( FAILED( D3DXCreateTextureFromFileEx( pDirect3DDevice, "Directx.jpg", D3DX_DEFAULT, D3DX_DEFAULT, 100000, 131072, D3DFMT_UNKNOWN, D3DPOOL_DEFAULT,D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER,D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER,0x000000ff,NULL,NULL,&pTextura001 ) ) ) return E_FAIL; // Загружаем вторую текстру if( FAILED( D3DXCreateTextureFromFileEx( pDirect3DDevice, "Directx.bmp", D3DX_DEFAULT, D3DX_DEFAULT, 10000, 131072, D3DFMT_UNKNOWN, D3DPOOL_DEFAULT,D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER,D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER,0x0000000f,NULL,NULL,&pTextura002 ) ) ) return E_FAIL; // Создаем буфер вершин if( FAILED( pDirect3DDevice->CreateVertexBuffer( 36 * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT, &pBufferVershin, NULL ) ) ) return E_FAIL; //Блокируем VOID* pBV; if( FAILED( pBufferVershin->Lock( 0, sizeof(Vershin), (void**)&pBV, 0 ) ) ) return E_FAIL; //Копируем memcpy( pBV, Vershin, sizeof(Vershin) ); // Разблокируем pBufferVershin->Unlock(); // Создаем индексный буфер pDirect3DDevice->CreateIndexBuffer( 36 * sizeof(Index), 0, D3DFMT_INDEX16, D3DPOOL_DEFAULT,&pBufferIndex, NULL); //Блокируем VOID* pBI; pBufferIndex->Lock( 0, sizeof(Index) , (void**)&pBI, 0 ); //Копируем memcpy( pBI, Index, sizeof(Index) ); // Разблокируем pBufferIndex->Unlock(); |
|||
|
||||
| Helicopter |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 22.7.2005 Репутация: нет Всего: нет |
это я скинул. только не зубудь всё в начале объявить
LPDIRECT3DTEXTURE9 pTextura001 = NULL; // Текстyра 1 LPDIRECT3DTEXTURE9 pTextura002 = NULL; // Текстyра 2 если чё пиши |
|||
|
||||
| JoyEx |
|
|||
|
Дядя ![]() ![]() Профиль Группа: Участник Сообщений: 323 Регистрация: 21.6.2005 Где: Москва, РФ Репутация: 1 Всего: 12 |
Можно это сделать еще с помощью оверлея, причем чем проще цвет, тем больше вероятность его сделать прозрачным, т.е. если не RGB(255,215,0), а типа RGB(0,255,0). Например,
В SrcColorkey (источник) указывается цвет, который будет прозрачным у источника, т.е. у адресата (lpPrimarySurface2) RGB(0,255,0) с lpSurf2 не увидишь. Можно еще задать color key адресата, чтобы только этот цвет (или диапазон) изменялся. Помните! Поверхности могут иметь разный цветовой формат. -------------------- Если ты уже никого не боишься, значит ты самый страшный |
|||
|
||||
| Div |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 3.6.2005 Где: Первоуральск Репутация: 1 Всего: 1 |
Всё понял! Спасибо
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Имхо, оверлей для таких целей - слишком жирно будет
Просто выставь ортогональную проекцию, единичную матрицу вида, отключи Z-тест, включи и настрой альфаблендинг, и выводи прямоугольник с текстурой, имеющей альфа-канал... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Div |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 3.6.2005 Где: Первоуральск Репутация: 1 Всего: 1 |
Как отключить Z-тест?
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
d3ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE)
Аналогично и блендинг делается: D3DRS_ALPHABLENDENABLE, D3DRS_SRCBLEND, D3DRS_DESTBLEND... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Div |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 3.6.2005 Где: Первоуральск Репутация: 1 Всего: 1 |
А можно вопрос? Как подогнать прямоугольник под текстуру (по размерам)? У меня всё расплывается. Получается что-то увидеть только тогда, когда изменяю координаты текстуры, но получается так, что квадратиков (тектура - белый квадрат обведенный красным по кроям) много. Наверное в Microsoft должны были предусматреть вывод таких картинок. Может есть другой способ?
|
|||
|
||||
| p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Не понял, что у тебя там такое расплывается и куда, наверное, ты что-то неправильно делаешь.
Вот как должно примерно быть:
-------------------- С уважением, г-н Посол. |
||||
|
|||||
| Div |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 3.6.2005 Где: Первоуральск Репутация: 1 Всего: 1 |
Я написал свой способ вывода картинки на передний план. Он чем-то похож на разъяснения pOsOl'а. Вставил несколько комментарием, так что должно быть понятно, что к чему. Все что относиться к выводу картинки находиться в AppInit() и RenderScene(). Кому интересно, можете скачать готовый пример отсюда
Я писал на Microsoft Visual Studio .NET (C++), но .dsp файл создается => на VS C++ тоже пойдет! |
|||
|
||||
| NordWolf |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 15.8.2007 Репутация: нет Всего: 1 |
при выводе текста проблема возникла. Вообщем код программы таков:
при компиляции появяются следующие ошибки: E:\Development\OpenGL\Text\text.c(83) : error C2059: syntax error : 'type' E:\Development\OpenGL\Text\text.c(87) : error C2059: syntax error : 'type' E:\Development\OpenGL\Text\text.c(94) : error C2059: syntax error : 'if' что это и как это исправить? Это сообщение отредактировал(а) NordWolf - 26.9.2007, 01:02 |
|||
|
||||
![]()
|
| Вы можете найти полезным что... | |
|
|
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |