2013-06-20 4 views
0

Поскольку LPD3DXLINE принимает только 1D, я конвертирую 2d-массив в 1-й массив. Таким образом, я могу держать нарисованную линию на экране и рисовать еще одну новую строку.Преобразование 2d массива в 1-й массив для строки чертежа

D3DXVECTOR2 lineVertices[newLine][currentLine] 

for (int i=0; i < noOfNewLine; i++) 
    line->Draw(lineVertices[i], 2, D3DCOLOR_XRGB(0, 0, 0)); 

Если я изменяю

D3DXVECTOR2 lineVertices[currentLine][newLine] 

Как я должен делать с

lineVertices[i] 

, чтобы преобразовать его в 1d массив успешно?

ответ

1

Зачем нужно преобразовывать 2d в 1d? Любой массив в C \ C++ хранится в памяти как 1d allready. Просто назначить адрес первого elemnt указателю

p = &lineVectices[0][0]; 

где p является указателем на свой тип массива. А затем итерацию по p

for (int i=0; i<newLine*currentLine; i++){ 
// do stuff with p[i] 
} 
+0

Ошибка ошибка C2440: 'инициализации': не удается преобразовать из 'D3DXVECTOR2 (*) [2]' до 'D3DXVECTOR2 * – zzz

+0

@optimisez извините, отредактировал мой ответ, он должно быть 'p = & lineVectices [0] [0]' –