SaintShadow
Новенький
Offline
|
|
« : 24-12-2012 23:22 » |
|
Приветствую, вопрос такой. MSVS2012 ultimate edition Недавно начал изучать DirectX, начал с 9 версии, по книге Фленова "Исскуство DirectX". Пытаюсь сделать вращающийся куб. Вот часть кода. struct sVertex {float x,y,z; DWORD color;};
void CreateQuad() { const sVertex svVortexList[] = { -0.5f, -0.5f, -0.5f, 0x00ff0000, -0.5f, 0.5f, -0.5f, 0x00ff0000, 0.5f, -0.5f, -0.5f, 0x00ff0000, 0.5f, 0.5f, -0.5f, 0x00ff0000,
0.5f, -0.5f, -0.5f, 0x0000ff00, 0.5f, 0.5f, -0.5f, 0x0000ff00, 0.5f, -0.5f, 0.5f, 0x0000ff00, 0.5f, 0.5f, 0.5f, 0x0000ff00,
0.5f, -0.5f, 0.5f, 0x000000ff, 0.5f, 0.5f, 0.5f, 0x000000ff, -0.5f, -0.5f, 0.5f, 0x000000ff, -0.5f, 0.5f, 0.5f, 0x000000ff,
-0.5f, -0.5f, 0.5f, 0x00ffff00, -0.5f, 0.5f, 0.5f, 0x00ffff00, -0.5f, -0.5f, -0.5f, 0x00ffff00, -0.5f, 0.5f, -0.5f, 0x00ffff00,
-0.5f, 0.5f, -0.5f, 0x0000ffff, -0.5f, 0.5f, 0.5f, 0x0000ffff, 0.5f, 0.5f, -0.5f, 0x0000ffff, 0.5f, 0.5f, 0.5f, 0x0000ffff,
0.5f, -0.5f, -0.5f, 0x00ff00ff, 0.5f, -0.5f, 0.5f, 0x00ff00ff, -0.5f, -0.5f, -0.5f, 0x00ff00ff, -0.5f, -0.5f, 0.5f, 0x00ff00ff, };
const unsigned short Idxes[]={
0,1,2,2,1,3, 4,5,6,6,5,7, 8,9,10,10,9,11, 12,13,14,14,13,15, 16,17,18,18,17,19, 20,21,22,22,21,23, };
void SetView() { D3DMATRIX View = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 10, 1, }; pD3DDevice->SetTransform(D3DTS_VIEW, &View); }
и тут сразу 3 проблемы..... 1) void CreateQuad() как бы я не пытался изменить цвет на экране появляеться куб, с половиной граней - черного цвета, и половиной граней цвета фона, пытался ставить везде 0x00000000 и 0xffffffff, а также выставлять цифры, на фвет это не влияет.... 2)const unsigned short Idxes[] судя по объяснению автора, все здесь должно быть хорошо, т.к. координаты по часовой стрелке, но почему только половина граней закрашивается, а другая я так понимаю остается прозрачной, поменяв значения я добился того что все грани стали черного цвета, построив треугольники против часовой 0, 2, 1, 2,3,1, 4, 6, 5, 6, 7, 5, 8, 10, 9, 10, 11, 9, 12, 14, 13, 14, 15, 13, 16, 18, 17, 18, 19, 17, 20, 22, 21, 22, 23, 21, но толку мало, границы не выделены, так что отображается "дышащий прямоугольник" 3)void SetView() расстояние по оси Z автор давал 5 у меня это вылилось в отказ отображать куб напрочь, куб стал отображаться только начиная с 10, но сразу, достаточно далеко от камеры. целый день выискиваю ошибки этого кода, скурил 3 пачки сигарет.... подскажите пожалуйста. предложения поджечь книгу и тушить её мочой, прошу не предлагать
|