Привет!
Начал осваивать Windows Embedded CE 6.0 R3, которую планируется устанавливать на небольшую PC-совместимую материнку в приборе. От производителей получил готовый образ WinCE на карточке (NK.BIN) и SDK для разработки приложений. (Разработку/адаптацию самой WinCE пока не делаю, пользуюсь готовым образом.)
Наша прежняя приборная программа базируется на DirectX, поэтому я первым делом решил проверить работу Direct3D Mobile. Скомпилировал и запустил шесть туторных примеров (те, что "TUT0n_XXX"). Все они нормально работают. Тогда я стал экспериментировать с "TUT03_MATRICES" и столкнулся с проблемой: не могу нарисовать два треугольника вместо одного (мне нужно рисовать несколько разных объектов, поэтому я для начала попробовал просто два отдельных треугольника). Я немножко модифицировал функцию "SetupMatrices", чтобы она могла сдвигать мировую матрицу по осям X, Y. Вот код рендера:
// Begin the scene
if( SUCCEEDED( g_pd3dmDevice->BeginScene() ) )
{
// Setup the world, view, and projection matrices
SetupMatrices( -1.0f, 1.0f); // Shift by x = -1, y = 1
// Render the vertex buffer contents
g_pd3dmDevice->SetStreamSource( 0, g_pVB, sizeof(CUSTOMVERTEX) );
g_pd3dmDevice->DrawPrimitive( D3DMPT_TRIANGLELIST, 0, 1 );
//!!!! SetupMatrices( 1.0f, -1.0f);
g_pd3dmDevice->DrawPrimitive( D3DMPT_TRIANGLELIST, 0, 1 );
// End the scene
g_pd3dmDevice->EndScene();
}
В таком виде все работает. Но стоит мне раскомментировать второй вызов "SetupMatrices" - и все, не работает, даже клиентская часть окна не обновляется (в ней остается картинкка десктопа).
Помогите, пожалуйста, разобраться с этой проблемой!
P.S. Окружение:
1. Рабочий компьютер: Windows XP, MS Visual Studio 2005, SDK для разработки приложений.
2. Целевая система: Windows CE 6.0, Direct3D Mobile.
Компилирую программу на рабочем компьютере, записываю на флешку и запускаю на целевой системе.