Ну раз такое дело. Вставлю свои копейки. Самые так сказать основы которые нельзя забывать в DirectX.
Создание устройства дисплея:
Quote
p_d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &p_d3d_Device))
2 параметр - тип устройства, само собой D3DDEVTYPE_HAL - аппаратный.
4 параметр - обработка вершин, само собой D3DCREATE_HARDWARE_VERTEXPROCESSING - аппартная, видел во многих туторах D3DCREATE_SOFTWARE_VERTEXPROCESSING, что плохо. Аппаратная может дать очень большую прибавку FPS, при выводе большого кол-ва геометрии. Как то делал развивающийся флаг, и обалдел насколько много прибавилось FPS. D3DPRESENT_PARAMETERS d3dpp;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
Своп эффект ставим именно такой - D3DSWAPEFFECT_DISCARD, я уже разразился тирадой по поводу этого флага на xdev.ru Майкрософт рекомендует именно его для релиза, так как это самый производительный вариант, позволяет видяхе производить различные оптимизации.
Теперь что касается флагов Usage, во всяких CreateVertexBuffer и т.д. Самый производительный это конечно D3DUSAGE_WRITEONLY, так как позволяет держать данные в видеопамяти. D3DUSAGE_DYNAMIC ставим если у нас динамически изменяемые данные, и она будет находиться в AGP памяти.