ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX


Интерфейс DirectDraw - часть 15


Приведенный фрагмент содержит большое количество аспектов, которые я не стану подробно объяснять. Интерфейсы DirectDraw описаны в документации по DirectX SDK. Вы можете самостоятельно провести ряд экспериментов, взяв за основу данный код.

Тестирование

Для организации тестовых циклов используется таймер. Тестирующая функция вызывается из обработчика сообщений таймера:

void CTestWnd::OnTimer(UINT nIDEvent) {

// Выполнить следующий тест switch (m_pTI-»iTest) { case 1:

TestGDIText() ;

breaks-case 2:

TestGDIGfxf) ;

break;

case 3:

TestDDSprite() ;

break;

case 4:

TestDirectPixels() ;

break;

default:

ASSERT(0) ;

break;

}

Тестирование GDI при работе с текстом

В этом тесте я решил прибегнуть к услугам GDI для того, чтобы вывести в окне небольшой текст. При этом мне хотелось оценить, насколько медленно GDI будет справляться с данной задачей и будет ли вывод текста влиять на другие тесты. Результаты, полученные на моем компьютере Dell, меня вполне устроили — при выполнении теста в окне 320х200 скорость превышала 200 кадров в секунду. Все остальные тесты построены на основе этого кода, поэтому мы подробно рассмотрим его, шаг за шагом:

void CTestWnd::TestGDIText() (

ASSERT(m_pTI) ;

// Получить указатели на первичный и вторичный буфера

Работа с DirectDraw ''TO 291

CDDSurface* pBB = m_pDD-»GetBackBuffer () ;

ASSERT(pBB) ;

CDDSurface* pFB = m_pDD-»GetFrontBuffer();

ASSERT(pFB) ;

// Получить прямоугольник, описывающий первичный буфер RECT rcFront;

if (m_pTI-»bFullScreen) {

pFB-»GetRect (rcFront) ;

} else (

GetClientRect(SrcFront) ;

ClientToScreen(&rcFront) ;

}

RECT rcBack;

pBB-»GetRect (rcBack) ;

DWORD dwStart = timeGetTime() ;

int nFrames = 100;

for (int iFrame = 0; iFrame « nFrames; iFrame++) (

DWORD dwNow = timeGetTime();

double fps;

if (dwNow == dwStart) (

fps = 0;

} else {

fps = iFrame * 1000.0 / (double)(dwNow — dwStart);

}

// Подготовить выводимый текст char buf[64];

sprintffbuf, "Frame td (%3.1f fps)", iFrame, fps);




Начало  Назад  Вперед



Книжный магазин