Я пытаюсь визуализировать поверхность с помощью метода, который принимает положение Surface и X, Y для рендеринга. Проблема в том, что когда поверхность выходит за пределы экрана на один маленький пиксель, она вообще не рендерится.
Это почему? Я пытаюсь найти отсечение DirectX, но вообще ничего не могу найти.
void Draw(LPDIRECT3DSURFACE9 src, int x, int y)
{
D3DSURFACE_DESC desc;
src->GetDesc(&desc);
D3DVIEWPORT9 viewport;
Device->GetViewport(&viewport);
int vX = viewport.X;
int vY = viewport.Y;
int vWidth = viewport.X + viewport.Width;
int vHeight = viewport.Y + viewport.Height;
RECT source;
source.left = max(x, vX);
source.right = min(source.left + desc.Width, vWidth);
source.top = max(y, vY);
source.bottom = min(source.top + desc.Height, vHeight);
RECT destination;
destination.left = max(x, vX);
destination.right = min(destination.left + desc.Width + x, vWidth);
destination.top = max(y, vY);
destination.bottom = min(destination.top + desc.Height + y, vHeight);
Device->StretchRect(src, &source, BackBuffer, &destination, D3DTEXF_POINT);
};
... и X = 100, Y = 100 не работает, а -100 работает, но это не растягивает его правильно.
Пример изображения с желаемым эффектом:
Я также пытался установить *pSourceRect и *pDestRect на что-то, что обрезает поверхность, но безуспешно.
Я использую DirectX9.
StrectRect
? Ограничений много, краткий обзор у меня не видел что-то связанное, но может быть и есть :) - person Gnietschow   schedule 13.01.2013