Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Создание текстуры


Автор: Mastkir 17.11.2008, 15:48
Доброго Дня!  smile 

Для увеличения быстродействия, рисую на текстурах средствами GDI. 
Делаю это следующим образом:

1. Создаю текстуру: 
    LPDIRECT3DTEXTURE9 texture;
    device->CreateTexture(512, 16, 1, 0, D3DFMT_X8R8G8B8, D3DPOOL_MANAGED, &texture, NULL);
2. Получаю surface:
  LPDIRECT3DSURFACE9 textureSurface;
  texture->GetSurfaceLevel(0, &textureSurface);
3. Получаю hdc:
  HDC hdc;
  textureSurface->GetDC(&hdc);
4. С помощью hdc рисую все, что мне нужно.

Все отлично. Действительно, быстрее работает, чем если рисоватть то-же средствами directX, НО!
Текстура получается без прозрачности (она была создана как D3DFMT_X8R8G8B8, а не D3DFMT_A8R8G8B8, чтобы потом GetDC взять можно было), а мне нужно чтобы фон у текстуры был прозрачным. 

Как можно этого добиться?   smile     Может быть, можно создать еще одну текстуру D3DFMT_A8R8G8B8, а затем скопировать мою текстуру туда, а заданный цвет (цвет фона) поменять на прозрачный? Пробовал использовать CreateOffscreenPlainSurface, и StretchRect, но пока без успеха :(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)